Discussione chiusa
Visualizzazione dei risultati da 1 a 1 su 1

Discussione: [Access] Leggere/scrivere dati nelle tabelle tramite VBA (DAO)

  1. #1
    L'avatar di dragone bianco
    dragone bianco non è in linea Moderatore Globale
    Luogo
    Aosta
    Post
    7,734

    [Access] Leggere/scrivere dati nelle tabelle tramite VBA (DAO)

    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
    3. Muoversi nei dati della tabella (tramite una ricerca o spostandosi da un record all'altro)
    4. estrarre o modificare il dato scelto
    5. Chiudere la tabella
    6. Chiudere la connessione
    INDICEApertura 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",dbOpenDynaset)

    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.

    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'Ultimo record

    variabili

    NomeRecordset.BOF ha un valore True se il record corrente è precedente 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 eseguendo 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'ultimo record

    Es: Tabella1.FindFirst "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 opzioni

    Lettura Dati

    variabile=NomeRecordset.Fields("NomeCampo")

    Modifica Dati

    NomeRecordset.Edit 'Abilita la modifica del record
    NomeRecordset.Fields("NomeCampo")= variabile 'imposta il nuovo valore del campo
    ....
    NomeRecordset.UpDate 'Salva La modifica

    Creazione Dato

    (molto simile alla modifica dati)

    NomeRecordset.AddNew 'crea ilnuovo record
    NomeRecordset.Fields("NomeCampo")=variabile 'imposta il valore del campo
    ....
    NomeRecordset.UpDate 'Salva il record

    Eliminazione dati

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

    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
    DBCorrente.Close
    Esempio2

    Apertura di un db e ricerca di 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
    DBCorrente.Close
    Ultima modifica di dragone bianco; 05-02-2016 10:11  Motivo: Reastauro suggerito da OsvaldoLaviosa

Discussione chiusa

Discussioni simili

  1. Risposte: 5
    Ultimo Post: 24-06-2006, 17:42
  2. unire dati di tabelle con nome parzialmente comune
    Da franciros nel forum Microsoft Office, Access, VBA
    Risposte: 6
    Ultimo Post: 29-04-2006, 11:00
  3. [Access] Ricerca tramite parola chiave
    Da payu nel forum Access
    Risposte: 6
    Ultimo Post: 16-12-2005, 15:49

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi