logo MC2 E-Learning S.a r.l.
Logo Einstein grigio sfumato
e = m x c al quadrato





Preimpostare valori nei controlli con una macro di Access

Impariamo come preimpostare valori nei controlli di maschere o report con l'utilizzo di una macro di Access







Convalidare i dati è soltanto uno dei molti modi con cui si  può assicurare l’integrità dei dati  i n un database.

Preimpostare i valori per certi campi è un altro modo.

Sebbene si possa impostare la proprietà Valore predefinito di un campo, qualche volta sarà necessario impostare il valore di un campo in base a quello di un altro campo in una maschera.

Vorremo, per esempio, impostare i valori dei campi COSTO_ORA e COSTO_OP nella maschera OreLavorateOperai in base al valore del campo NomeOperaio. Questo si può ottenere con una macro.

In questo paragrafo, esamineremo azioni nel gruppo di macro ConvalidaOperaioImpostaCostoOrario che impostano i valori dei campi del costo orario (COSTO_ORA) e di COSTO_OP (Costo dell'operazione) dove COSTO_OP = COSTO_ORA X ORE_LAV (Ore lavorate) nella maschera OreLavorateOperai in base all'operaio immesso.

Se si scorre verso il basso in questa macro, si potranno vedere le azioni addizionali, come si vede nella figura qui sotto.




La tabella elenca le azioni e gli argomento in questa macro.

Le azioni e gli argomenti nella mascro ImpostaCostoOrario:

Azione
Casella argomento
Impostazioni
ImpostaValore
Elemento
COSTO_ORA

Espressione
DLookup("COSTO_ORA";"[OPERAI]";[OPERAI]![NOME]=[NomeOperaio]
ImpostaValore
Elemento
COSTO_OP

Espressione
COSTO_ORA*ORE_LAV
VaiACOntrollo
NomeControllo
COSTO_OP
ImpostaValore
Elemento
[Forms]![OreLavorateOperai]![COSTO_OP].SelStart

Espressione
255
RieseguiQuery
NomeControllo
NomeOperaio
ImpostaValore
Elemento
[Forms]![OreLavorateOperai]![RequeryFlag]

Valore
False

Quando l’utente immette un nome di operaio valido, la prima azione Imposta valore utilizza la funzione incorporataDLookup per reperire il corrispondente valore COSTO_ORA (Costo Orario) dallatabella OPERAI.

Se il valore per COSTO_ORA non è vuoto o Nuill, la seconda azione Imposta valore reperisce il valore di COSTO_ORA dalla tabella OEPERAI, sposta il focus sul controllo COSTO_ORA di OreLavorateOperai con un’azioneVaiAControllo e imposta la proprietà SelStart del controllo COSTO_OP su un valore alto (255) per collocare il cursore alla fine dei dati visualizzati nel controllo.

Anche la pressione del tasto F2 dopo essersi portati in un controllo colloca il cursore alla fine dei dati nel controllo, perciò qui si potrebbe usare anche un’azione InviaTasti. Tuttavia impostare la proprietà SelStart è un metodo più veloce e più affidabile.

(Si veda la Guida di Access per ulteriori informazioni sulla proprietà SelStart.)

Ora l’utente non deve fare altro che passare al controlloCOSTO_OP, ove troverà l'importo della moltiplicazione già effettuata (naturalmente leore lavorate vanno introdotte precedentemente, in modo da  sfruttare l'automatismo)  La colonna Condizione per la seconda azione è come segue:

Not ([COSTO_ORA]=0 Or [COSTO_ORA] Is Null)


Ora il gruppo di macro è completo. Abbiamo garantito l’integrità dei dati convalidandoli e preimpostando valori specifici. Questo fa diminuire le probabilità che l’utente possa commettere errori.

Adesso vedremo come associare queste macro agli eventi appropriati nella maschera OreLavorateOperai e nella maschera OPERAI.

Facciamo clic sulla scheda Maschere nella finestra Database e apriamo la maschera OrelavorateOperai in  visualizzazione Struttura.

Ancora un clic sul controllo casella combinata NomeOperaio e poi clic sul pulsante Proprietà nella barra degli strumenti.

Quando si apre la finestra delle proprietà, facciamo clic sulla scheda Evento.

Dovremmo vedere la macro 'ConvalidaOperaioImpostaCostoOrario.TestOperaio' associata all’evento Prima di aggiornare della casella combinata NomeOperaio.

Ricordiamoci che questa è la macro che dovremo eseguire per verificare se l’utente ha immesso un nome di operaio valido.

La proprietà Dopo aggiornamento dell’evento dovrebbe essere impostata su 'ConvalidaOperaioImpostaCostoOrario.ImpostaCostoOrario'.

Questa macro imposta automaticament
e i valori di COSTO_ORA e COSTO_OP corrispondenti ogni volta che l’utente specifica un nuovo valore per l'OPERAIO.

Nella figura che segue si vedono i risultati.



Salviamo e chiudiamo la maschera OreLavorateOperai..

Apriamo lamaschera OPERAI in visualizzazione Struttura, e facciamo clic sul pulsante Proprietà nella barra degli strumenti per aprire la finestra della proprietà. Facciamo clic sulla scheda Evento e poi clic nella casella della proprietà Dopo inserimento.

Dall’elenco a discesa, selezioniamo la macro ConvalidaOperaioImpostaCostoOrario.AggiornaElencoOperai. Stiamo associando la macro con questo particolare evento, in modo tale che si eseguirà soltanto dopo che l’utente avrà immesso nuovi dati sull'operaio nella maschera OPERAI.

La finestra delle proprietà dovrebbe essere come quella che si vede nella figura qui sotto



Salviamo echiudiamo la maschera OPERAI.

Ora che abbiamo definito le macro e le abbiamo associate agli oggetti e agli eventi appropriati, siamo pronti a mettere alla prova il nostro lavoro. Si comincia facendo clic sulla scheda Macro nella finestra Database ed eseguendo la macro Autoexec.

Dopo che si è aperta la maschera OreLavorateOperai ci si sposta su un nuovo record e si immette una Data, un Codice Coltura e un Codice Operazione.

Quando il cursore si sposta sulla casella combinata NomeOperaio, si immette MAURIZIO (un nuovo operaio a tempo indetereminao)

Quando avremo premuto Invio oppure Tab, Access esegue la macro:
ConvalidaOperaioImpostaCostoOrario.TestOperaio

Dal momento che, attualmente, questo operaio non esiste nella tabella OPERAI, la macroChiediNuovo si esegue e Access visualizza la finestra di messaggio illustrata nella figura:






Dopo che l’utente ha fatto clic sul pulsante Sì,
Access esegue le restanti azioni nella macro: apre la maschera OPERAI, copia il nome del nuovo operaio nel campo NOME della maschera e sposta il cursore sul campo COSTO_ORA. Il risultato di queste azioni si vede nella figura:




Dopo che l’utente avrà immesso idati nei restanti campi e avrà chiuso la maschera OPERAI, l’evento Dopolnserimento della mascheraattiverà la macro:

 ConvalidaOperaioImpostaCostoOrario.AggiornaElencoOperai

Dopo la chiusura della maschera,Access riporta il focus sulla maschera OreLavorateOperai.

Quando l’utente infine lascia il controllo NomeOperaio, ora valido, lamacro attivata da DopoAggiornamento riesegue la query sul controllo casella combinata NomeOperaio e aggioma automaticamente i COSTO_ORA e COSTO_OP.

In questo tutorial abbiamo appreso come convalidare dati e impostare valori dei campi in una maschera.

Nel far questo, abbiamo anche imparato qualche cosa di più sull’integrità dei dati. Nei prossimi tutorials  approfondiremo la conoscenza di ciò che si può ottenere da VBA.

Creazione di una macro semplice

Gruppi di macro

Espressioni condizionali

Fare riferimento a oggetti maschere e report

Aprire una maschera secondaria

Sincronizzare due maschere correlate

Convalidare dati immessi dall'utente

Preimpostare i valori nei controlli


Collegamenti ad altri tutorial su Microsoft Access:

Le Relazioni tra le tabelle di Access

Costruire una tabella con Access



Esempi di Macro con Microsoft Access

Tutorials su Microsoft Access




Dr.Maurizio Cucchiara
autore del corso:
"Corso Base di Microsoft Access"
disponibile on line su questo sito
MC2 E-Learning S.a r.l.
Formazione per il Web
http://www.mc2.it/html/access.html


Cerca sul web con Google:


Google