![]() |
|||||
|
|||||
|
Tutorial Access - Giocare con le date |
|||||
|
Questo caso pratico ci è stato segnalato da un
utente di sviluppoisi.com. Realizzando un database
di contabilità familiare si è scontrato con il
seguente problema: se viene fatto un pagamento con carta di credito la data di addebito varia in funzione della data del pagamento e delle condizioni bancarie. Come è possibile calcolare in modo automatico la data di addebito dell'importo sul conto corrente? Abbiamo, per ovvi motivi, semplificato il database che il nostro utente ci ha mandato lasciando solo i campi necessari allo studio:
Nella maschera sopra riportata sono evidenti le condizioni che devono essere rispettate. Si noti che è sempre indicata una data superata la quale se ne deve applicare un'altra del mese successivo. Se provate il demo allegato al tutorial vi accorgerete che messa la data del movimento, l'importo e selezionata la banca (il tipo di carta di credito) nella casella Data Scadenza compare la data voluta. Se modificate la Data Movimento la Data Scadenza viene cancellata. Per fare quanto voluto sono sufficienti due routine vba negli eventi Dopo Aggiornamento, ma prima abbiamo dovuto inserire nella preesistente tabella BANCA i dati Fino al e Pagare il :
Quando sceglieremo una banca nella casella combinata della maschera di contabilità il sistema leggerà i dati corrispondenti e, a titolo esemplificativo, le riporterà nelle caselle a destra che sono disabilitate.
Queste caselle dovrebbero essere non visibili ma lo sono perchè possiate verificarne il funzionamento. Voi scegliete una banca, il sistema riempie le caselle con i dati relativi, viene avviata una routine all'evento Dopo Aggiornamento che legge i dati nelle caselle, calcola la data di scadenza e la scrive nella casella corrispondente. In realtà la routine di visual basic non è semplice per un principiante: guardatela dall'esempio.
Si noti l'utilizzo della funzione IsDate. Tale
funzione risponde falso se vede che una data non è
corretta. In pratica noi per calcolare un fine
mese creeremo una data 31/mm/aa. Se il mese fosse
febbraio la funzione IsDate segnalerebbe l'errore
e noi proveremmo con un giorno in meno, ovvero
30/02/aa. Di nuovo errore e quindi 29/02/aa. Se
l'anno è bisestile abbiamo finito altrimenti si
prova con 28 febbraio. A questo punto la routine
passa la data alla casella scadenza.
Dim giorno As Integer, F As Integer, I As Integer Provate ad impratichirvi con l'utilizzo di visual basic e vedrete che non è poi così complicato. |
|||||