Pierluigi
Salve a tutti e complimenti per il forum
eccomi di nuovo per un vostro aiuto
Ho tre tabelle:
1° Tabella (Articoli) :
id_articolo (chiave primaria)
CodArticolo
DescrizioneArticolo
Note
UItrev
Annirev
Ultcal
2° Tabella: (Armadio) :
id_armadio (chiave primaria)
CodArmadio
3° Tabella (Movimenti)
CodMovimento(chiave primaria)
Id_articolo
Id_armadio
DataMov
OraMov
Quantita
Notex
Le tre tabelle sono collegate:
id_articoli tabella(Articoli) uno a molti con tabella(Movimenti) id_articolo
id_armadiotabella(Armadio) uno a molti con tabella(Movimenti) id_armadio
Domanda : sarebbe possibile tramite una maschera fare un movimento articolo tramite una Query di Aggiornamento che aggiorni la quantità
di un articolo in base all’ Armadio scelto.
Nella maschera ho 3 combo: prima dove scelgo l’articolo (cmbArt)
Seconda combo : (**cmbArPre)**dove scelgo Armadio di prelievo
Casella di testo: dove mi esce la quantità dell’articolo disponibile in base in base all’Armadio scelto con combo cmbArPre.
Casella di testo: dove inserisco la quantità di prelievo.
Terza combo :(cmbArDes) dove scelgo l’Armadio di destinazione dell’Articolo.
Sarebbe possibile se ho Es: 100 pippo in Armadio A ne sposto 20 pippo in Armadio B con una query di Aggiornamento che mi aggiorni solo le quantità in Tabella Movimenti
senza avere numeri negativi:
100 pippo
A
-20 pippo
A
20
pippo B
Ma in questo modo : 80 pippo A
20 pippo B
In pratica che mi aggiorni solo le quantità in Tabella Movimenti
Questo è il codice della maschera attuale :
Private Sub Form_Load()
' MsgBox "ATTENZIONE !!!! COMPILARE DA 1 A 5 SEGUENDO LE ETICHETTE ROSSE "
End Sub
Private Sub cmdReset_Click()
DoCmd.Close acForm, "MasComplessa"
End Sub
Private Sub cmbArt_AfterUpdate()
' Aggiorno la Casella combinata Armadi con le quantita dell'articolo scelto
'Dim varArt As String
'varArt = Nz(Me!cmbArt.Value, "")
'Dim StSq1 As String
'StSq1 = ""
'StSq1 = StSq1 & "SELECT "
'StSq1 = StSq1 & "Movimenti.CodArmadio, "
'StSq1 = StSq1 & "Sum(Movimenti.Quantita) As TotArm "
'StSq1 = StSq1 & "FROM "
'StSq1 = StSq1 & "Movimenti "
'StSq1 = StSq1 & "GROUP BY "
'StSq1 = StSq1 & "Movimenti.CodArmadio, "
'StSq1 = StSq1 & "Movimenti.CodArticolo "
'StSq1 = StSq1 & "HAVING "
'StSq1 = StSq1 & "((Movimenti.CodArticolo)='" & varArt & "')"
'StSq1 = StSq1 & "AND Sum(Movimenti.Quantita) > 0"
'StSq1 = StSq1 & "AND Movimenti.CodArmadio <> 'FUORI USO'"
'StSq1 = StSq1 & ";"
'Me!cmbArPre.RowSource = StSq1
Me!cmbArPre.Requery
Me!FilArm.Visible = True
Me.txtQDis = Me.cmbArt.Column(2)
Me.txtQTra.Enabled = Nz(Me.cmbArt + Me.cmbArPre, 0)
'Call AggCon
End Sub
Private Sub cmbArPre_AfterUpdate()
' Aggiorno la casella combimata Articoli in funzione dell'armadio scelto
'Dim varArm As String
'varArm = Nz(Me!cmbArPre.Value, "")
'Dim StSq2 As String
'StSq2 = ""
'StSq2 = StSq2 & "SELECT "
'StSq2 = StSq2 & "Articoli.DescrizioneArticolo, "
'StSq2 = StSq2 & "Movimenti.CodArticolo, "
'StSq2 = StSq2 & "Articoli.Note, "
'StSq2 = StSq2 & "Sum(Movimenti.Quantita) As TotQu "
'StSq2 = StSq2 & "FROM "
'StSq2 = StSq2 & "Articoli "
'StSq2 = StSq2 & "INNER JOIN "
'StSq2 = StSq2 & "Movimenti "
'StSq2 = StSq2 & "ON "
'StSq2 = StSq2 & "Articoli.CodArticolo = Movimenti.CodArticolo "
'StSq2 = StSq2 & "GROUP BY "
'StSq2 = StSq2 & "Articoli.DescrizioneArticolo, "
'StSq2 = StSq2 & "Movimenti.CodArticolo, "
'StSq2 = StSq2 & "Articoli.Note, "
'StSq2 = StSq2 & "HAVING "
'StSq2 = StSq2 & "((Movimenti.CodArmadio)='" & varArm & "')"
'StSq2 = StSq2 & "AND Sum(Movimenti.Quantita) > 0"
'StSq2 = StSq2 & "AND Movimenti.CodArmadio <> 'FUORI USO'"
'StSq2 = StSq2 & ";"
'Me!cmbArt.RowSource = StSq2
Me.cmbArt.Requery
Me!FilArt.Visible = True
Me.txtQDis = Me.cmbArPre.Column(2)
Me.txtQTra.Enabled = Nz(Me.cmbArt + Me.cmbArPre, 0)
'Call AggCon
End Sub
Private Sub AggCon()
' aggiorna i controlli di maschera
'Dim varArt As String
'varArt = Nz(Me!cmbArt.Value, "")
'Dim varArm As String
'varArm = Nz(Me!cmbArPre.Value, "")
'
Me.txtQTra.Enabled = True
'
Me.txtQDis.Value = DSum("Movimenti.Quantita", "Movimenti", "((codArticolo='" & varArt & "') AND (CodArmadio='" & varArm & "'))")
End Sub
Private Sub txtQTra_DblClick(Cancel As Integer)
Me.txtQTra.Value = Me.txtQDis.Value
Call txtQTra_AfterUpdate
End Sub
Private Sub txtQTra_AfterUpdate()
If Me.txtQTra.Value > Me.txtQDis.Value Then
Dim str As String
str = ""
str = str & "Vuoi trasferire una quantita" & vbNewLine
str = str & "superiore al disponibile" & vbNewLine & vbNewLine
str = str & "La operazione è consentita" & vbNewLine
str = str & "avrai come risultato delle" & vbNewLine
str = str & "giacenze negative" & vbNewLine & vbNewLine
str = str & "
Vuoi proseguire ???" & vbNewLine
Dim msgxx As Integer
msgxx = MsgBox(str, vbInformation + vbYesNo + vbDefaultButton2)
If msgxx = 7 Then
' si = 6
/
No = 7
Me.txtQTra.Value = ""
'DoCmd.GoToControl ("TxtQTra")
Me.cmbArDes.Enabled = True
Exit Sub
End If
End If
End Sub
Private Sub cmbArDes_AfterUpdate()
Me.cmdExecute.Enabled = True
Me.cmdExecute.Caption = "Trasferisci"
End Sub
Private Sub cmdExecute_Click()
Dim varDat As Date
' La data
varDat = Me.txtDatx.Value
Dim varArt As String ' Atricolo
varArt = Me.cmbArt.Value
Dim varQua As Integer
varQua = Me.txtQTra.Value
Dim varAPr As String ' Armadio di prelievo
varAPr = Me.cmbArPre.Value
Dim varADe As String ' Armadio di Destinazione
varADe = Me.cmbArDes.Value
Dim varNot As String
varNot = Nz(Me.txtNote.Value, "")
Dim strSql As String
strSql = "insert into movimenti (id_articolo, id_armadio, dataMov, quantita, notex) values (" & _
Me.cmbArt & "," & Me.cmbArDes & "," & CLng(Me.txtDatx) & "," & Me.txtQTra & ",'" & Me.txtNote & "')"
DBEngine(0)(0).Execute strSql, &H80
strSql = "insert into movimenti (id_articolo, id_armadio, dataMov, quantita, notex) values (" & _
Me.cmbArt & "," & Me.cmbArPre & "," & CLng(Me.txtDatx) & "," & -Me.txtQTra & ",'" & Me.txtNote & "')"
DBEngine(0)(0).Execute strSql, &H80
MsgBox " OK! MOVIMENTO ESEGUITO! "
Call cmdReset_Click
End Sub
' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
' Faccio il carico nell'armadio scelto
'Dim StSq3 As String
'StSq3 = ""
'StSq3 = StSq3 & "INSERT INTO "
'StSq3 = StSq3 & "Movimenti "
'StSq3 = StSq3 & "( "
'StSq3 = StSq3 & "DataMov, "
'StSq3 = StSq3 & "CodArticolo, "
'StSq3 = StSq3 & "Quantita, "
'StSq3 = StSq3 & "CodArmadio, "
'StSq3 = StSq3 & "Notex "
'StSq3 = StSq3 & ") "
'StSq3 = StSq3 & "SELECT "
'StSq3 = StSq3 & "#" & Format$(varDat, "mm/dd/yyyy") & "# AS XDat, "
'StSq3 = StSq3 & "'" & varArt & "' AS XArt, "
'StSq3 = StSq3 & varQua & " AS XQua, "
'StSq3 = StSq3 & "'" & varADe & "' AS XArm, "
'StSq3 = StSq3 & "'" & varNot & "' AS XNot"
'StSq3 = StSq3 & ";"
'DBEngine(0)(0).Execute (StSq3)' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
' Faccio lo scarico nell'armadio scelto
'StSq3 = ""
'StSq3 = StSq3 & "INSERT INTO "
'StSq3 = StSq3 & "Movimenti "
'StSq3 = StSq3 & "( "
'StSq3 = StSq3 & "DataMov, "
'StSq3 = StSq3 & "CodArticolo, "
'StSq3 = StSq3 & "Quantita, "
'StSq3 = StSq3 & "CodArmadio, "
'StSq3 = StSq3 & "Notex "
'StSq3 = StSq3 & ") "
'StSq3 = StSq3 & "SELECT "
'StSq3 = StSq3 & "#" & Format$(varDat, "mm/dd/yyyy") & "# AS XDat, "
'StSq3 = StSq3 & "'" & varArt & "' AS XArt, "
'StSq3 = StSq3 & (varQua * -1) & " AS XQua, "
'StSq3 = StSq3 & "'" & varAPr & "' AS XArm, "
'StSq3 = StSq3 & "'" & varNot & "' AS XNot"
'StSq3 = StSq3 & ";"
'DBEngine(0)(0).Execute (StSq3)
' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
'MsgBox " OK! MOVIMENTO ESEGUITO!
"
'Call cmdReset_Click
'End Sub
Ciao,grazie
Pierluigi