Sei sulla pagina 1di 4

[Access] Leggere/scrivere dati nelle tabelle tramite VBA (DAO) - VBA Tutorials & ...

Pagina 1 di 4

Home Blogs Docs Marketplace Regolamento Messaggi di oggi Cerca

Nome utente Nome utente Ricordati?


MasterDrive.it > Software Development > MS Office, Access, VBA > VBA Tutorials & How-To
[Access] Leggere/scrivere dati nelle tabelle tramite VBA (DAO) Password Entra

Sei nuovo della Comunità ? Clicca qui per registrarti !

Software per le aziende


per valutare la performance e creare strategie
www.tdainformatica.it

Strumenti della discussione Modalità di visualizzazione

18-05-2006, 20:53 #1 (permalink

dragone bianco [Access] Leggere/scrivere dati nelle tabelle tramite VBA (DAO)
Moderatore Globale
Mi sono accorto che più volte ho fatto esempi di come leggere e/o scrivere dati nelle tabelle tramite VBA
utilizzando il metodo DAO.
Questo articolo vuole fare una sintesi dei codici da utilizzare per questo intento.

Premessa

Per leggere i dati di una tabella bisogna eseguire le seguenti operazioni in questa sequenza:

1. Collegarsi al db che contiene la tabella (il db può essere un db esterno al progetto o il progetto
stesso)
2. Aprire la tabella (o le tabelle) per accedere hai dati
6,449 Messaggi 3. Muoversi nei dati della tabella (tramite una ricerca o spostandosi da un record all'altro)
4. estrarre/o modifcare il dato scelto
5. Chiudere la tabella
6. Chiudere la connessione

INDICE

 Apertura di un collegamento db e della tabella


 Spostarsi nei record di una tabella
 Ricerca di un dato nella tabella
 Lettura, Creazione, Modifica ed eliminazione di un dato
 Chiusura della tabella e del collegamento
 Esempio

Apertura di un collegamento db e della tabella


Per effettuare una connessione al db e inseguito aprire la tabella desiderata bisogna dichiarare 2 variabili
una di tipo Database (rappresenta il collegamento DB) e una di tipo recordset (Rappresenta la tabella)

Dim DBCorrente as DAO.Database


Dim Tabella as DAO.Recordset

Apertura DB

set dbcorrente=currentdb 'per aprire un collegamento sul dbcorrente


oppure
set dbcorrente=opendatabase("C:\Prova.mdb") 'per Aprire un DB esterno

Apertura Tabella

Una volta aperto il collegamento al db bisogna aprire la tabella (o query)

Set Tabella=DBCOrrente.openrecordset("TAbella1",dbopen dynaset)

oppure utilizzando codice SQL

Set Tabella=DBCOrrente.openrecordset("Select *.* from Tabella1",dbopendynaset)

Spostarsi nei record di una tabella


una volta volta aperto la tabella access si posiziona sul primo record della tabella.

http://forum.masterdrive.it/vba-tutorials-and-how-to-37/access-leggere-scrivere-dati-n... 23/08/2010
[Access] Leggere/scrivere dati nelle tabelle tramite VBA (DAO) - VBA Tutorials & ... Pagina 2 di 4

Codici

utilizzate i seguenti codici per spostarvi tra i record:

nomerecordset.movenext =vai al record successivo


nomerecordset.moveprevious =vai al record Precedente
nomerecordset.movefirst =vai al primo record
nomerecordset.movelast =vai all'untimo record

variabili

nomerecordset.BOF ha un valore true se il record corrente è preceddente al primo record


nomerecordset.EOF ha un valore true se il record corrente è Successivo all'ultimo

Queste 2 variabili sono utili quando si utilizzano i codici


nomerecordset.movenext =vai al record successivo
nomerecordset.moveprevious =vai al record Precedente

poichè una volta raggiunto l'ultimo record ed eseguento il codice nomerecordset.movenext access si porta
su un record vuoto e setta la variabile nomerecordset.EOF a true se si esegue ulteriormente il codice
nomerecordset.movenext access restituirà un errore.
(Idem per il codice nomerecordset.moveprevious)

Ricerca di un dato nella tabella


Per eseguire una ricerca nella tabella utilizzare i seguenti codici

nomerecordset.findnext "Criteri" =ricerca il record successivo


nomerecordset.findprevious "Criteri" =ricerca il record Precedente
nomerecordset.findfirst "Criteri" =ricerca il primo record
nomerecordset.findlast "Criteri" =ricerca l'untimo record

Es: tabella1findfirst "ID=3" Cerca il primo dato con con il campo ID=3

Se l'esito della ricerca è negativo access imposta la seguente variabile a true


nomerecordset.NoMatch

Lettura e modifica dati


Una volta reso corrente il dato di cui si vuole modificare e /o leggere eseguire una delle seguenti ozioni

Lettura Dati

variabile=nomerecodset.Fields("NomeCampo")

Modifica Dati

nomerecodset.edit 'Abilita la modifica del record


nomerecodset.Fields("NomeCampo")=variabile 'imposta il nuovo valore del campo
....
nomerecodset.upDate 'Salva La modifica

Creazione Dato

(molto simile alla modifca dati)

nomerecodset.addnew 'crea ilnuovo record


nomerecodset.Fields("NomeCampo")=variabile 'imposta il valore del campo
....
nomerecodset.upDate 'Salva il record

Eliminazione dati

nomerecodset.delete

Chiusura Tabelle e collegamento


Si utilizza il codice Close (prima si chiude la tabella inseguito il collegamento)

ESEMPIO

Tabella1.close
DBCorrente.close

Esempio Pratico
Esempio1

Apertura di un db e leggere tutti i dati

http://forum.masterdrive.it/vba-tutorials-and-how-to-37/access-leggere-scrivere-dati-n... 23/08/2010
[Access] Leggere/scrivere dati nelle tabelle tramite VBA (DAO) - VBA Tutorials & ... Pagina 3 di 4

codice:

Dim DBCOrrente as DAO.Database


Dim Tabella AS DAO.recordset

'Apertura DB
SEt Dbcorrente=CurrentDB

'Apertura tabella
Set Tabella=DBCorrente.openrecordset("Tabella1",DBopendynaset)

'Lettura dati
Do until tabella.eof
msgbox tabella.fields("Campo")

'vai al dato successivo


tabella.movenext
loop

'Chiusura tabella
tabella.close
'Chiusura DB

Esempio2

Apertura di un db e ricercadi dati

codice:

Dim DBCOrrente as DAO.Database


Dim Tabella AS DAO.recordset

'Apertura DB
SEt Dbcorrente=CurrentDB

'Apertura tabella
Set Tabella=DBCorrente.openrecordset("Tabella1",DBopendynaset)

'Ricerca primo Dato


Tabella.findFist "Campo1='Pippo'"

Do until tabella.NoMatch
msgbox tabella.Fields("Campo")

'Ricerca il dato successivo


tabella.FindNext "Campo1='Pippo'"
loop

'Chiusura tabella
tabella.Close
'Chiusura DB

Bookkeeping Certificate 2 Courses For You To Become a Competent Bookkeeper $198.50 www.YourBookkeepingMadeEasy.com

Database Doc Tool Build and edit documentation for SQL Server, Access and other DBs www.innovasys.com

__________________
Dragone Bianco

-Se non l'hai ancora fatto, Leggi il Regolamento.

-Hai ricevuto un aiuto, commenta l'intervento utilizzando il pulsante

-Ti sono stato d'aiuto, fai una Donazione.

Ultima modifica di Master85 : 18-05-2006 a 22:31.

« - | [Access] Funzioni di dominio »

Regole d'invio

Non puoi inserire discussioni

http://forum.masterdrive.it/vba-tutorials-and-how-to-37/access-leggere-scrivere-dati-n... 23/08/2010
[Access] Leggere/scrivere dati nelle tabelle tramite VBA (DAO) - VBA Tutorials & ... Pagina 4 di 4

Non puoi inserire repliche


Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è attivo
Le smilies sono attive
Il codice IMG è attivo
il codice HTML è disattivato
Trackbacks are attivo
Pingbacks are attivo
Refbacks are disattivato
Salto del forum
Forum Rules
VBA Tutorials & How-To

Discussioni simili
Discussione Ha iniziato questa discussione Forum Risposte Ultimo messaggio

[Access] ordinamento dati tabella tramite command button gladiatore MS Office, Access, VBA 5 24-06-2006 18:42

unire dati di tabelle con nome parzialmente comune franciros MS Office, Access, VBA 6 29-04-2006 12:00

[Access] Ricerca tramite parola chiave payu MS Office, Access, VBA 6 16-12-2005 16:49

Tutti gli orari sono GMT +2. Attualmente sono le 12:47.

Contatta lo Staff - Pagina iniziale - Vai in cima

Powered by vBulletin versione 3.8.0


Copyright © 2000 - 2010, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.2.0

Eccetto dove diversamente specificato, i contenuti pubblicati in questa comunità sono rilasciati sotto Licenza
Creative Commons Attribuzione-Non commerciale-Condividi allo stesso modo 2.5 Italia License.
La comunita' di MasterDrive.it non e' responsabile di eventuali imprecisioni presenti nelle pagine.

http://forum.masterdrive.it/vba-tutorials-and-how-to-37/access-leggere-scrivere-dati-n... 23/08/2010