|
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 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. |
|
|