martedì 21 agosto 2012

Recordset DAO


Function esempioRecorset(tabellaSorgente As String)

'a. Apertura DB
    Set DBCorrente = CurrentDb 'per aprire un collegamento sul dbcorrente
    'Set dbcorrente = OpenDatabase("C:\Prova.mdb") 'per Aprire un DB esterno
'b. Apertura tabella
    Set rst = DBCorrente.OpenRecordset(tabellaSorgente, dbOpenSnapshot)
    'Set tabella = DBCOrrente.OpenRecordset("Select * from Tabella", dbOpenSnapshot) 'per usare l'SQL
    ' - dbOpenDynaset Apre un recordset di tipo dynaset, con capacita' di scorrimento in entrambi i sensi. Questo tipo di recordset conserva solo un collegamento ai dati, che sono letti direttamente dal database alla bisogna. E' il piu' completo ma il piu' lento.
    ' - dbOpenTable Apre una tabella, in questo caso la stringa SQL si suppone che contenga solo il nome della tabella da aprire e niente altro. Il recordset e' scorribile in entrambe i sensi,
    ' - dbOpenSnapshot Uno snapshot e' un recordset non modificabile, con tutti i dati in memoria. E' il tipo piu' efficiente per operazioni di lettura dei dati.
    
'c. Spostamenti
    rst.MoveNext 'vai al record successivo
    rst.MovePrevious 'vai al record Precedente
    rst.MoveFirst 'vai al primo record
    rst.MoveLast 'vai all'untimo record

'd. variabili
    rst.BOF 'ha un valore true se il record corrente è preceddente al primo record
    rst.EOF 'ha un valore true se il record corrente è Successivo all'ultimo
    
'e. Ricerca di un dato nella tabella
    rst.FindNext "Campo=Criterio" 'ricerca il record successivo che soddisfa l'espressione (es.: "ID=3")
    rst.FindPrevious "Campo=Criterio" 'ricerca il record Precedente che soddisfa l'espressione (es.: "ID=3")
    rst.FindFirst "Campo=Criterio" 'ricerca il primo record che soddisfa l'espressione (es.: "ID=3")
    rst.FindLast "Campo=Criterio" 'ricerca l'untimo record cche soddisfa l'espressione (es.: "ID=3")
    
    rst.NoMatch 'ha un valore true se l'esito della ricerca è negativo
    
'f. Lettura e modifica dati
    variabile = rst.Fields("NomeCampo") 'Lettura

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

    rst.AddNew 'crea ilnuovo record e si posiziona su di esso
    rst.Fields("NomeCampo") = variabile 'imposta il valore del campo
    rst.Update 'Salva il record

    rst.Delete 'eliminazione dati
    
'g. Chiusura Tabelle e collegamento
    rst.Close
    DBCorrente.Close
  
End Function