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:
(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????