sabato 29 ottobre 2011

[Access VBA] Su Maschere e Query Parametriche

Descrizione :
Una tecnica interessante per collegare Maschere basandosi sull'uso avanzato delle Query Parametriche e minimizzando la scrittura di codice VBA.

+ Articolo :

L'esempio si basa su una Tabella "globale", da cui prelevare i dati.
In breve, la struttura della Tabella è la seguente :

id - contatore - PK [1,2,...]
IP - testo [192.168.1.1 , 192.168.1.2 , ... ]
HOST - Testo
LOGON - Testo
DOMINIO - Testo

Nell'esempio che segue risolvo il passaggio tra la Maschera TROVA ( con 3 controlli di tipo TextBox : TIP, THOST, TLOGON ) e la Maschera VISUALIZZA ( che contiene gli stessi controlli ma in modalità sola lettura e visualizza il risultato della ricerca, un record per volta ).

Per gestire il passaggio servono veramente poche righe di VBA, e inoltre grazie all'uso di un'opportuna Query Parametrica, si risolve alla radice ogni possibile problema di errore nell'inserimento da parte dell'utente.

I due vantaggi principali di questa tecnica sono :
1. La Query Parametrica risolve implicitamente i casi d'errore inserimento utente ( TextBox vuota, formati non previsti, ecc... ), che nella peggiore ipotesi porterebbero ad un crash del processo, risparmiando parecchie righe di controllo VBA.
2. Si evita l'approccio comune di concatenare direttive Sql e valori, con tutte le eccezioni che questo può portare.

Anzitutto, la Query Parametrica. Ovviamente prende i dati dalla tabella globale.
La creo in struttura così ( un'immagine vale più di mille parole ) :


Come si vede, nei criteri di IP, HOST e LOGON, i Parametri fanno riferimento diretto ai controlli sulla Maschera TROVA. Questo accorgimento risparmia in un colpo solo decine e decine di righe VBA.
Salvo la Query e la nomino "Query_TROVA".

A questo punto la Maschera TROVA passa in automatico i propri parametri alla Maschera VISUALIZZA.

--> Maschera TROVA :

Sulla Maschera TROVA c'è il pulsante "cmd_trova", che applica i criteri dell'utente.
L'unico codice necessario è per il pulsante :

Private Sub cmd_trova_Click()

    DoCmd.OpenForm "VISUALIZZA", acNormal, , , acFormReadOnly

End Sub


Con acFormReadOnly la rendo di sola lettura, come desiderato.

--> Maschera VISUALIZZA :

La Maschera VISUALIZZA può essere creata tranquillamente a partire dalla Tabella globale, con creazione guidata. Al momento del Load(), semplicemente si andrà a ridefinire il suo RecordSource.
Perciò l'unico codice necessario è questo :

Private Sub Form_Load()

    Me.RecordSource = "Query_TROVA"

End Sub


Query_TROVA è la nostra brava Query Parametrica di cui sopra, e posso passarne il nome
come stringa direttamente al RecordSource della Maschera. Comodo no ?

+ Fine Articolo.

Un Click su "Mi Piace" è il modo migliore per ringraziare l'autore di questo articolo.



0 commenti:

Posta un commento

Favorites Twitter Facebook Delicious Digg Stumbleupon More

 
Design by Free WordPress Themes Modificato da MarcoGG