Aggiornamento Listini su db gestionale homemade(no PRO)

di il
2 risposte

Aggiornamento Listini su db gestionale homemade(no PRO)

Rieccoci...

nuovo quesito per il mio db homemade di gestione aziendale...

Premessa: capitolo Listini

dopo aver creato una struttura relazionale m_m tra prodotto e listino ora mi sto imbattendo nel fornire all'utente la possibilità di aggiornare il/i listino/i corrente/i tramite maschera e codice su pulsante..

la premessa è che, a cadenza non definita, si voglia aggiornare i prezzi di un determinato listino...quindi per conservare lo storico sugli ordini ho strutturato il db come segue:
relazionilistini.png
relazionilistini.png

(le tabelle sono su un dbprova che uso per testare soluzioni...i campi necessari ci dovrebbero essere tutti )
questo mi porta ad avere un solo prezzo per prodotto/listino_valido da caricare nel dettaglio ordine..

tramite una combobox in una maschera ad hoc scelgo il "nome" del listino che voglio aggiornare e con il codice seguente creo un nuovo listino(nuovo idlistino e vecchio nome) con i valori dei prezzi a 0 (ancora da rifinire con la gestione degli errori):
Private Sub Cmdaggiorna_Click()
If Len(Me.cbosellistino) Then
'prendo l'idlistino dell'ultimo listino valido da duplicare
vecchio = DLast("IDListino", "TblListini", "Nome ='" & Me.cbosellistino & "' AND Valido=true")
'creo un nuovo record in Tbllistini
CurrentDb.Execute ("insert into TblListini (Nome) select '" & Me.cbosellistino & "' as expr1")
'prendo l'idlistino appena creato
nuovo = DLast("IDListino", "TblListini", "Nome ='" & Me.cbosellistino & "'")
'duplico i record di tblprezziprodotti dell'ultimo listino e gli assegno il nuovoidlistino
CurrentDb.Execute ("INSERT INTO TblPrezziProdotti ( IDListino, IDProdotto )" & _
" SELECT " & nuovo & " AS Espr1, TblPrezziProdotti.IDProdotto " & _
" FROM TblPrezziProdotti" & _
" WHERE (((TblPrezziProdotti.IDListino)=" & vecchio & "));")
MsgBox "IL nuovo listino " & Me.cbosellistino & " è stato Creato!", vbOKOnly
Else
MsgBox "Devi selezionare un Listino da Aggiornare!", vbCritical
Exit Sub
End If
End Sub
facilmente prevederò la possibilità di aggiornare anche il campo prezzo con un incremento fisso(percentuale da controllo maschera )...ma voglio lasciare la possibilità (tra l'altro richiesta) di aggiornare manualmente i prezzi del nuovo listino ...qui è il motivo del 3d...

come posso visualizzare il nuovo listino facendo vedere anche il vecchio prezzo??

ho provato con la pivot(campi incrociati) ma non posso poi editarlo..

ho pensato di creare una tbl di appoggio ed inserire tramite codice un nuovo campo valuta per il nuovo prezzo con il seguente codice:
'creo una nuova vista di appoggio "TblApp"
CurrentDb.Execute ("SELECT TblPrezziProdotti.* INTO TblApp" & _
" FROM TblPrezziProdotti" & _
" WHERE (((TblPrezziProdotti.IDListino)=" & vecchio & "));")
'aggiungo il nuovo campo sulla Vista TblApp
CurrentDb.Execute ("Alter table TblApp add column Nuovo currency ;")
farebbe da recordsource ad una maschera continua che mi da la possibilità di inserire il nuovo prezzo e quando ho completato il recordset... riaggiorno la tblPrezziProdotti, cancello la tblapp (o anche no), modifico TblListini attivando il Nuovo idlistino e chiudendo quello vecchio tramite il si/no su campo Valido

questo è come pensavo di agire... voi come la pensereste una cosa del genere????

2 Risposte

  • Re: Aggiornamento Listini su db gestionale homemade(no PRO)

    Non so se ho colto a pieno... e ti faccio 2 considerazioni.
    1) Se cambi il Prezzo del listino, le transazioni fatte prima della modifica del prezzo subiscono il Ricalcolo del prezzo oppure lo avevi salvato nella Tabella del movimento...? (chiedo in quanto spesso si salva, ma si tiene anche traccia dello storico del listino, in questo caso vecchio e nuovo sono sempre accessibili)

    2) Se non tieni lo storico, forse ti basta inserire 2 campi nella Tabella Listino... Prezzo e PrezzoVecchio... quando cambi il Prezzo, popoli il campo Prezzo Vecchio con OldValue...!
  • Re: Aggiornamento Listini su db gestionale homemade(no PRO)

    @Alex ha scritto:


    Non so se ho colto a pieno... e ti faccio 2 considerazioni.
    1) Se cambi il Prezzo del listino, le transazioni fatte prima della modifica del prezzo subiscono il Ricalcolo del prezzo oppure lo avevi salvato nella Tabella del movimento...? (chiedo in quanto spesso si salva, ma si tiene anche traccia dello storico del listino, in questo caso vecchio e nuovo sono sempre accessibili)

    2) Se non tieni lo storico, forse ti basta inserire 2 campi nella Tabella Listino... Prezzo e PrezzoVecchio... quando cambi il Prezzo, popoli il campo Prezzo Vecchio con OldValue...!
    ho creato apposta la struttura dei listini validi per conservare lo storico ...su inserimento nuovo ordine l'utente può scegliere solo prodotti che hanno un prezzo per il listino valido agganciato al cliente tramite una combo filtrata ad hoc... il listino viene anche memorizzato sull'ordine in modo da cambiare successivamente il listino del cliente.

    quindi si... cambiare il listino non modifica i vecchi ordini ma mi consente di farne di nuovi con nuovi prezzi prodotti...

    tornando al quesito...forse finirei prima a duplicare anche il prezzoprodotto e aggiornare solo la chiave listino... in questo modo . "alle brutte" avrei un prezzo non aggiornato... lascerei la possibilità di aggiornare manualmente e singolarmente il prodotto del "nuovo" listino...prima di attivarlo(renderlo valido) e contemporaneamente chiudere il vecchio...

    il post era inteso a capire se ci sono strade migliori ferma restando la struttura...
Devi accedere o registrarti per scrivere nel forum
2 risposte