Stampa delle Giacenze della Merce di Magazzino

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.

Stampa Giacenze Calus 2012

Calus 2012 - Anteprima di stampa delle giacenze di magazzino

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 TutorialLezione Successiva >>

Informazioni su Giampaolo Rossi

Sviluppatore di software gestionale da oltre 28 anni.
Questa voce è stata pubblicata in Database, Gestionale. Contrassegna il permalink.