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 – Inizio Tutorial – Lezione Successiva >>