Originariamente inviato da mefisto_ax
Dovrei anche impostare una query che mi aggiorni anche il credMov che praticamente è caratterizzato dai "movimenti" della "persona", che, ad ogni movimento che fa, acquista un oggetto e quindi modifica il suo credito.
La stessa cosa dovrebbe potersi ottenere con lo scalo di gia(giacenza), ad ogni movimento(acquisto) di una persona.
Io farei cosi, (Cerco di essere dettagliato)
Crea una maschera di nome "Mas1"
ci metti dentro:
--- CasellaCombinata per selezionare la persona
- Nome "CCPer"
- Numero Colonne 2
- Larghezza colonne 4cm;1cm
- Righe in elenco 60
- Larghezza elenco 6
- Colore Giallo
- Origine riga "SELECT PERSONE.Nome, PERSONE.idP FROM PERSONE;" ( Senza virgolette )
- Colonna associata 2
--- CasellaCombinata per selezionare l'articolo
- Nome "CCArti"
- Numero Colonne 2
- Larghezza colonne 4cm;1cm
- Righe in elenco 60
- Larghezza elenco 6
- Colore Giallo
- Origine riga "SELECT ARTICOLI.Arti, ARTICOLI.idA FROM ARTICOLI;" ( Senza virgolette )
- Colonna associata 2
--- Casella di testo per decidere se accuisto o vendita
- Nome "TxAV"
- Colore sfondo giallo
- Valido se: "a" Or "v" ( ammette solo a oppure v )
- Messaggio di errore "Scrivi a oppure v"
--- Casella di testo per la Quantita movimentata
- Nome "TxQu"
- Colore sfondo giallo
- Formato Standard
- Posizioni decimali Automatiche
--- Casella di Testo per lanciare la procedura
- Nome "Gooooo"
- Origine controllo: ="Go"
- Colore Verde
- SuClik: [Routine evento] ( questo dopo verifichi che ci sia ancora )
---- Nella maschera metti questo codice che:
- Aggiunge un record alla tabella MOVIMENTI
- Aggiorna la Giacenza articoli nella tabella ARTICOLI
- Aggiorna il credito dei movimenti nella tabella PERSONE
codice:
Private Sub Gooooo_Click()
If Nz(Me!CCPer.Value, "") = "" Or Nz(Me!CCArti, "") = "" Or Nz(Me!TxAV.Value, "") = "" Or Nz(Me!TxQu.Value, "") = "" Then
MsgBox ("Alcuni valori non sono compilati")
Exit Sub
End If
Dim Per As Integer
Dim Art As Integer
Dim AVe As String
Dim Qua As Long
Dim Pre As Long
Per = Me!CCPer.Value
Art = Me!CCArti.Value
AVe = Me!TxAV.Value
Qua = Me!TxQu.Value
Pre = DLookup("ARTICOLI.Prez", "ARTICOLI", "ARTICOLI.idA=" & Art)
Dim ssq As String
' INSERT la riga dei movimenti
ssq = ""
ssq = ssq & "INSERT INTO MOVIMENTI ( Quan, Casu, idAM, idPM ) "
ssq = ssq & "SELECT " & Qua & " AS Quax, '" & AVe & "' AS Casx, " & Art & " AS Artx, " & Per & " AS Perx;"
DBEngine(0)(0).Execute ssq
' Aggiorno la giacenza articoli
ssq = ""
ssq = ssq & "UPDATE ARTICOLI SET "
ssq = ssq & "ARTICOLI.Gia = IIf('" & AVe & "'='a',(ARTICOLI.gia-" & Qua & "),(ARTICOLI.gia+" & Qua & ")) "
ssq = ssq & "WHERE (((ARTICOLI.idA)=" & Art & "));"
DBEngine(0)(0).Execute ssq
' Aggiorno il credito residuo movimenti
ssq = ""
ssq = ssq & "UPDATE PERSONE SET "
ssq = ssq & "PERSONE.credimov = IIf('" & AVe & "'='a',(Nz(PERSONE.credimov)-(" & Qua & "*" & Pre & ")),(Nz(PERSONE.credimov)+(" & Qua & "*" & Pre & "))) "
ssq = ssq & "WHERE (((PERSONE.idP)=" & Per & "));"
DBEngine(0)(0).Execute ssq
ssq = ""
ssq = vbNullString
Me!CCPer.Value = Null
Me!CCArti.Value = Null
Me!TxAV.Value = Null
Me!TxQu.Value = Null
End Sub
e con questo dovrebbe gia finzionare tutto in modo minimale
__________________________________________________ ____________________
Poi se vuoi arricchire aggiungi una serie di caselle di testo che esprimono lo stato attuale del selezionato
--- Per sapere il IdP della persona
Nome: quello che vuoi
Origine Controllo: =[Maschere]![Mas1]![CCPer]
--- Per sapere DaIn della persona
Nome: quello che vuoi
Origine Controllo: =DLookUp("PERSONE.DaIn";"PERSONE";"PERSONE.idP=" & [Maschere]![Mas1]![CCPer])
--- Per sapere credimov della persona
Nome: TxCM
Origine Controllo: =DLookUp("PERSONE.credimov";"PERSONE";"PERSONE.idP =" & [Maschere]![Mas1]![CCPer])
--- Per sapere Creditemp della persona
Nome: TxCT
Origine Controllo: =DLookUp("PERSONE.Creditemp";"PERSONE";"PERSONE.id P=" & [Maschere]![Mas1]![CCPer])
--- Per sapere CreditoTotale della persona
Nome: Quello che vuoi
Origine Controllo: =[TxCM]+[TxCT]
--- Per sapere datagg della persona
Nome: Quello che vuoi
Origine Controllo: =DLookUp("PERSONE.datagg";"PERSONE";"PERSONE.idP=" & [Maschere]![Mas1]![CCPer])
--- Per sapere IdA dell ARTICOLO
Nome: Quello che vuoi
Origine Controllo: =[Maschere]![Mas1]![CCArti]
--- Per sapere la Gia dell ARTICOLO
Nome: TxGia
Origine Controllo: =DLookUp("ARTICOLI.Gia";"ARTICOLI";"ARTICOLI.idA=" & [Maschere]![Mas1]![CCArti])
--- Per sapere la Prez dell ARTICOLO
Nome: TxPr
Origine Controllo: =DLookUp("ARTICOLI.Prez";"ARTICOLI";"ARTICOLI.idA= " & [Maschere]![Mas1]![CCArti])
__________________________________________________ ____________________________________
Se vuoi ulteriormente arricchire con lo stato futuro ( dopo il Movimento )
--- Per sapere il credimov della persona
Nome Quello che vuoi
Origine Controllo: =[TxCM]+IIf([TxAV]="a";[TxPr]*[TxQu]*-1;[TxPr]*[TxQu])
Colore: Arancione
--- Per sapere il credito totale della persona
Nome Quello che vuoi
Origine Controllo: =[TxCM]+[TxCT]++IIf([TxAV]="a";[TxPr]*[TxQu]*-1;[TxPr]*[TxQu])
Colore: Arancione
--- Per sapere la Gia degli articoli
Nome Quello che vuoi
Origine Controllo: =[TxGia]+IIf([TxAV]="a";[TxQu]*-1;[TxQu])
Colore: Arancione
_______________________________________________
NB; I colori te li ho specificati perla differenza qualitativa fra i controlli
devi scrivere sui 4 Gialli e cliccare il Verde
Facci Sapere
.