Home Ritorna

 

Tutorial Access - Selezione dei dati tramite Visual Basic

Il tutorial che ci apprestiamo a presentare ci e' stato richiesto da un utente di www.sviluppoisi.com che ci ha inviato un esempio per avere spiegazioni (non sappiamo se l'esempio era allegato a qualche rivista o manuale; ci limitiamo qui a commentarlo).
In pratica abbiamo la seguente maschera (l'abbiamo modificata per renderla piu' comoda da consultare):

Le funzioni disponibili sono:

  • Premendo Tutti appaiono tutti i nominativi inseriti
  • Premendo spagna appaiono i nominativi spagnoli
  • E' possibile scegliere un paese dal combo-box ed appaiono i nomi relativi

Il sistema non usa query per effettuare selezioni ma visual basic con linguaggio SQL. Rispetto al tutorial di selezione con le query abbiamo una maggior flessibilitā dell'applicazione, ma una complessitā superiore.

La domanda del nostro utente riguardava l'interpretazione del codice.

Scaricate il demo


Premiamo il tasto Tutti
Premendo il tasto si avvia l'evento su click che e':

Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset

Set rst = New ADODB.Recordset

Set cnn = CurrentProject.Connection
rst.Open "Clienti", cnn, adOpenKeyset, adLockOptimistic


Set Me.Recordset = rst

rst.Close

Me.Testo0.ControlSource = "IDCliente"
Me.Testo3.ControlSource = "contatto"
Me.Testo6.ControlSource = "paese"

 

Come potete vedere (guardate anche i tutorial di visual basic), dopo essersi connesso ai dati il sistema riempie i campi Testo0, Testo3 e Testo6 con il contenuto della tabella Clienti. Essendo la maschera continua tutti i dati vengono incolonnati (non e' possibile pero' modificare i dati e questa e' una limitazione rispetto alla selezione con una query).


Premiamo il tasto spagna
Premendo il tasto si avvia l'evento su click che e':

Dim cnn As New ADODB.Connection
Dim rst1 As New ADODB.Recordset

Set rst1 = New ADODB.Recordset

Set cnn = CurrentProject.Connection
rst1.Open "SELECT * FROM Clienti WHERE Paese='Spagna'", cnn, adOpenKeyset, adLockOptimistic

Set Me.Recordset = rst1

'rst.Close
Me.Testo0.ControlSource = "IDCliente"
Me.Testo3.ControlSource = "contatto"
Me.Testo6.ControlSource = "paese"

Non e' molto diverso dal tasto precedente, ma fate attenzione a questa riga:

rst1.Open "SELECT * FROM Clienti WHERE Paese='Spagna'", cnn, adOpenKeyset, adLockOptimistic

Con il linguaggio SQL viene creata una query di selezione nella tabella Clienti:

SELECT * FROM Clienti Seleziona dalla tabella Clienti
   
WHERE Paese='Spagna' Il criterio di selezione nel campo Paese č Spagna

Il metodo e' efficace ma per cambiare il criterio e' necessario intervenire sul programma in basic.


Scegliamo manualmente un paese
Scelto un paese da un elenco il sistema ci fa vedere cio' che abbiamo scelto e poi elenca i nominativi.
In questo caso l'evento utilizzato e' il Dopo Aggiornamento.

MsgBox (Me.cmbRicerca)
Dim stPaese As String
stPaese = Me.cmbRicerca

Dim cnn As New ADODB.Connection

Dim rst1 As New ADODB.Recordset

Set rst1 = New ADODB.Recordset


StrSql = "SELECT * FROM Clienti WHERE Paese =" & "'" & stPaese & "'"

Set cnn = CurrentProject.Connection
rst1.Open StrSql, cnn, 1, 3
Set Me.Recordset = rst1

Me.cmbRicerca.SetFocus

In questo caso alla variabile stPaese viene assegnato il valore contenuto nel combo box e quindi il nome del paese scelto.
La query che viene creata specifica come criterio:

WHERE Paese =" & "'" & stPaese & "'

Bisogna fare attenzione a come si indicano i criteri utilizzando i caratteri & e gli apici (fate riferimento alla guida in linea di Access: per ogni tipo di variabile c'e' un metodo, per la gioia dei non esperti). Nell'esempio precedente Spagna era scritto semplicemente con ' prima e dopo. In questo c'e' un ' tra " e 2 &.

In questa routine appare poi un nuovo comando: Set Me.Recordset = rst1

rst1 e' il risultato della query: ogni riga di rst1 viene passato al recordset che qui rappresenta ogni riga della maschera continua che verra' completata.

Un consiglio: se non avete esperienza imparate a selezionare i dati con le query e poi studiate visual basic.

Scaricate il demo

 

 

Ritorna