Automatizzare un archivio fatture con Access

Come creare un archivio in Microsoft Access per la numerazione progressiva e automatica delle fatture emesse, in grado di ripartire anno dopo anno.

Comandi per controllo maschere

Adesso vediamo come inserire i codici di programmazione per dare gli automatismi al programma. A questo scopo ci serviremo di qualche comando VBA, che sarebbe il Visual basic applicato ai programmi della suite Office.

1. Riapriamo la maschera “ELENCO_FATTURE” e (in modalità struttura) selezioniamo il pulsante inserito in precedenza per poi cliccare F4 in modo da far apparire la “Finestra delle proprietà”.

2. Posizioniamoci nella scheda “Evento” e clicchiamo prima su “Click” e poi sui puntini che compaiono a lato. Dovrebbe comparire la finestra “Scegli generatore”:

3. Selezionare “Generatore di codice” e cliccare su OK

4. Nell’editor di Visual Basic, tra le diciture “Private Sub…” e “End sub” ricopiare il seguente codice:

Dim ab, cd
Dim stDocName, stLinkCriteria As String
Form_ELENCO_FATTURE.AllowAdditions = True
DoCmd.GoToRecord , , acLast
cd = Num
Testonum.Value = cd
If Data.Value = “” Then
ab = “1/1/1900″
Testodata.Value = ab
Else
ab = Data.Value
Testodata.Value = ab
End If
Form_ELENCO_FATTURE.AllowAdditions = False
stDocName = “NUOVA_FATTURA”
DoCmd.OpenForm stDocName, , , stLinkCriteria

Questo script consente di richiamare la maschera per l’inserimento delle fatture, ponendo in condizione il programma di aggiungere nuovi record.

5. Chiudere l’editor VB e visualizzare la “finestra delle proprietà” del campo “Cliente”, posizionarsi nella scheda EVENTO e click prima su USCITA poi sui puntini che compaiono a lato.

6. Nella finestra “Scegli generatore”, selezionare “Generatore di codice” e poi cliccare su OK

7. Nell’editor di Visual Basic, tra le diciture “Private Sub…” e “End sub” ricopiare il seguente codice:
Form_ELENCO_FATTURE.AllowAdditions = False

Questa riga di codice obbligherà l’utente ad inserire nuove fatture attraverso la maschera NUOVA_FATTURA

8. Dopo aver chiuso l’editor VB, selezionate il campo Data e nella scheda “Dati” digitare accanto a valore predefinito “=NOW()” (senza virgolette).
Questa locuzione consentirà di inserire come valore di default alla maschera la data odierna.

9. Andate adesso nella proprietà “Valore predefinito” del campo NUM e digitate 1. Così quando inseriremo i dati della prima fattura verrà numerata automaticamente come uno.

10. Esattamente come abbiamo visto prima per il campo CLIENTE, posizioniamoci nel Generatore di codice dell’evento USCITA del campo TOTALE e Digitiamo il seguente codice:

Dim aa, bb, cc, dd, ee
dd = aliq_IVA.Value
aa = Totale.Value
bb = aliq_IVA.Value
cc = aa / ((dd / 100) + 1)
imponibile.Value = cc
ee = aa – cc
IVA.Value = ee
Indirizzo.SetFocus

Questo script calcolerà automaticamente l’imponibile e l’iva, una volta trascritto il totale della fattura.
11. Esattamente come abbiamo visto prima per il campo TOTALE, posizioniamoci nel Generatore di codice dell’evento USCITA del campo “ALIQ_IVA” e ricopiamo lo stesso codice tranne che per l’ultima riga che diventa:
CLIENTE.setfocus

Questo script consente di ricalcolare l’imponibile e l’iva qualora venga modificata l’aliquota.

12. Chiudiamo la maschera, salvando le modifiche.

Seconda maschera

Ora lavoriamo sulla seconda maschera, in questo modo:

1. Apriamo “NUOVA_FATTURA” e posizioniamoci in visualizzazione struttura.
2. Facciamo doppio click all’incrocio dei righelli (Figura7), apparirà la “finestra delle proprietà” della maschera.


3. posizioniamoci nella scheda EVENTO e richiamiamo il generatore di codice in corrispondenza della proprietà “Su caricamento”, dopodiché digitiamo il seguente codice:

DoCmd.GoToRecord , , acLast
DoCmd.GoToRecord , , acNext

Questo breve script svuota tutti i campi, consentendo così solo l’inserimento di nuove fatture ogni volta che si richiama questa maschera, di fatto impedendo, da qui, all’utente, di utilizzare i record già inseriti.

4. Richiamare ora il generatore di codice del campo Totale, in corrispondenza della proprietà Uscita e digitare:

Dim aa, bb, cc, dd, ee
dd = aliq_IVA.Value
aa = Totale.Value
bb = aliq_IVA.Value
cc = aa / ((dd / 100) + 1)
imponibile.Value = cc
ee = aa – cc
IVA.Value = ee
Aliq_Iva.setfocus

5. Ripetere la stessa operazione sul campo “Aliq_Iva”. Il codice da ricopiare è lo stesso, tranne che per l’ultima riga che diventa:

Cliente.setfocus

Questi ultimi due script li abbiamo già utilizzati nella precedente maschera, e come già detto consentono di calcolare automaticamente l’imponibile e l’iva, una volta scritto il totale della fattura e l’aliquota iva.

6. Blocchiamo ora i campi IMPONIBILE e IVA in modo da evitare che inavvertitamente possano essere eliminati i calcoli eseguiti tramite i codici precedenti. A tal fine selezioniamo le due caselle e clicchiamo il tasto F4 per richiamare la “Finestra delle proprietà”. Posizioniamoci nella scheda Dati e impostiamo su “SI” la proprietà BLOCCATO.

7. Inseriamo come valore predefinito (scheda “Dati” della “Finestra delle proprietà”) al campo DATA “=NOW()” (senza virgolette), in modo da far inserire automaticamente la data odierna.

8. Infine diamo i comandi al pulsante “CONFERMA”, inserendo il seguente script nel generatore di codice richiamato in corrispondenza della proprietà CLICK:

Dim ZZ, RR As Date
Dim nn As Integer
ZZ = Data.Value
RR = Form_Elenco_Fatture!Testodata.Value
nn = Form_Elenco_Fatture!Testonum.Value
If ZZ < RR Then
MsgBox (“La data della nuova Fattura non può essere precedente a quella dell’ultima…”)
Data.SetFocus
Exit Sub
Else
If Year(ZZ) > Year(RR) Then
Num = 1
DoCmd.Close
Form_Elenco_Fatture.Requery
Else
Num = nn + 1
DoCmd.Close
Form_Elenco_Fatture.Requery
End If
End If

Quest’ultimo codice è estremamente importante perché esegue un po’ tutte le funzioni che avevamo descritto all’inizio di questo Tutorial, ovvero:

  • Impedisce all’utente di inserire, in una nuova fattura, una data precedente a quella dell’ultima archiviata
  • Numera automaticamente la nuova fattura assegnandole un numero progressivo superiore di una unità rispetto a quella dell’ultima archiviata
  • Nel caso in cui la data inserita appartenga al nuovo anno, la numerazione ricomincerà dall’uno.

Ora il nostro DB dovrebbe essere a posto. Prima di iniziare però ecco alcune dritte:

  • Dopo aver salvato tutte le modifiche aprite la maschera ELENCO_FATTURE, ovviamente all’inizio, poiché non è stato inserito alcun record la maschera apparirà priva di dati. Il primo record (SOLO IL PRIMO!!)  è necessario aggiungerlo in questa maschera (ELENCO_FATTURE), tutti gli altri invece dovrete inserirli tramite il pulsante “NUOVA FATTURA” che ci darà accesso alla maschera omonima.
  • In visualizzazione maschera, dopo aver cliccato sul campo DATA, attivate l’ordinamento crescente dalla barra HOME

Una volta inseriti i dati delle fatture, state molto attenti ad apportare modifiche all’elenco, poiché potrebbe risultare qualche incongruenza fra numeri e date.