Siamo arrivati alla quarta lezione del tutorial per creare il programma di magazzino Calus 2012 che ricordo è disponibile gratuitamente in formato compilato. Per chi invece vuole ed ha le capacità di creare da solo applicazioni in Access, può seguire queste lezioni per avere delle nuove idee, questa volta infatti vedremo come realizzare la stampa di un report con i dati di carico, scarico, rese e giacenze delle merci.
Al momento dell’apertura del report occorre calcolare il totale dei carichi, scarichi, rese e giacenze di ogni articolo, quindi basta appoggiare questi dati su una tabella creata ad-hoc e poi utilizzare quest’ultima come fonte dati del report stesso, ecco il codice per far funzionare il tutto.
Option Compare Database
Private Sub Corpo_Format(Cancel As Integer,
FormatCount As Integer)
If Not IsNull(Me!GiaceArt) Then
If Me!GiaceArt >= 0# Then
Me.Giacenza.ForeColor = RGB(50, 200, 50)
Else
Me.Giacenza.ForeColor = RGB(200, 50, 50)
End If
Else
Me.Giacenza.ForeColor = RGB(50, 200, 50)
End If
End Sub
Private Sub Report_Close()
Forms![Pannello comandi].Visible = True
End Sub
Private Sub Report_Open(Cancel As Integer)
Dim myData As dao.Database, myArt As dao.Recordset,
myCar As dao.Recordset, mySca As dao.Recordset,
myRese As dao.Recordset, myDst As dao.Recordset
Set myData = CurrentDb
myData.Execute "DELETE FROM [Stampa Magazzino]"
Set myDst = myData.OpenRecordset("Stampa Magazzino")
Set myArt = myData.OpenRecordset("Articoli")
While Not myArt.EOF
Set myCar = myData.OpenRecordset("SELECT SUM(Qt)
AS Tot FROM SottoCarichi
WHERE IDArticolo=" & myArt!IDArticolo)
Set mySca = myData.OpenRecordset("SELECT SUM(Qt)
AS Tot FROM SottoScarichi
WHERE IDArticolo=" & myArt!IDArticolo)
Set myRese = myData.OpenRecordset("SELECT SUM(Qt)
AS Tot FROM SottoRese
WHERE IDArticolo=" & myArt!IDArticolo)
Dim lCar As Single, lSca As Single, lRese As Single
If IsNull(myCar!Tot) Then
lCar = 0#
Else
lCar = myCar!Tot
End If
If IsNull(mySca!Tot) Then
lSca = 0#
Else
lSca = mySca!Tot
End If
If IsNull(myRese!Tot) Then
lRese = 0#
Else
lRese = myRese!Tot
End If
With myDst
.AddNew
!IDArticolo = myArt!IDArticolo
!TotCar = lCar
!TotSca = lSca
!TotRese = lRese
!GiaceArt = (lCar + lRese) - lSca
.Update
End With
myCar.Close
mySca.Close
myRese.Close
Set myCar = Nothing
Set mySca = Nothing
Set myRese = Nothing
myArt.MoveNext
Wend
myArt.Close
myDst.Close
Set myArt = Nothing
Set myDst = Nothing
Set myData = Nothing
End Sub
Certamente ognuno di voi può implementare questo processo a suo modo, qui ho soltanto dato un’idea sul comportamento corretto che, secondo me, va tenuto.
<< Lezione Precedente - Lezione Successiva >>


