L'argometo è ampio ed articolato; Ti espongo alcuni utilizzi base:
Apertura di una Tabella Access, lettura di un record, suo modifica;
per la sua cancellazione c'eè la funzione specifica, ma senza esempio
In un modulo -------------------------------------------------------------
Public WkDataBase As Workspace 'WorkSpace di lavoro
Public DbDataBase As Database 'DataBase
Public tbTabella As Recordset 'Tabella del DataBase
Public opTabella As Boolean 'indica se la tabella è aperta o meno
Public pathDataBase As String 'posizione e nome del DataBase di Access
Public NomeTabella As String 'nome della tabella da gestire
Public ChiaveIndice As String 'nome dell'indice da utilizzare per gli accessi diretti tramite chiave
Public Sub ApriTabella()
If opTabella then exit sub 'gia' aperta
Dim Gmsg as String, Response as Integer
opTabella = True 'imposto per difetto che sia aperta, per poi disabilitarlo in caso di errore
On Local Error Resume Next
Set tbTabella = DbDataBase.OpenRecordset(NomeTabella, dbOpenTable)
If Err.number > 0 Then
opTabella = False 'non aperta la Tabella
Gmsg = "ERRORE IN APERTURA TABELLA '" & NomeTabella &'"" & vbLf & Err.Number & ": " & Err.Description
Response = MsgBox(Gmsg, vbRetryCancel + vbExclamation, "ERRORE IN APERTURA TABELLA")
If Response = vbRetry Then ApriTabella
Else
tbTabella.Index = ChiaveIndice
End If
On Local Error GoTo 0 'resetto la gestione ERRORI
End Sub
Public Sub ChiudiTabella()
On Local Error Resume Next
If opTabella Then
tbTabella.Close
Set tbTabella = Nothing
End If
opTabella = False 'non aperta la Tabella
On Local Error GoTo 0
End Sub
Public Function EditOk(nomeTabella As Object) As Integer
On Local Error Resume Next
nomeTabella.Edit
EditOk = Err.Number
On Local Error GoTo 0
End Function
Public Function AddnewOk(nomeTabella As Object) As Integer
On Local Error Resume Next
nomeTabella.AddNew
AddnewOk = Err.Number
Err.Clear
End Function
Public Function UpdateOk(nomeTabella As Object) As Integer
On Local Error Resume Next
nomeTabella.Update
UpdateOk = Err.Number
If Err.Number <> 0 Then nomeTabella.CancelUpdate
Err.Clear
End Function
Public Function DeleteOk(nomeTabella As Object) As Integer
On Local Error Resume Next
nomeTabella.Delete
DeleteOk = Err.Number
Err.Clear
End Function
'---------------------------------------------------------------
'nella maschera:
'---------------------------------------------------------------
Private Sub Form_Load()
'preparo i dati per la gestione
pathDataBase = "C:\Dati\DataBase\Prova.mdb" 'DataBase da gestire
Set WkDataBase = DBEngine.Workspaces(0)
Set DbDataBase= Wkope.OpenDatabase(pathDataBase)
NomeTabella="Clienti"
ChiaveIndice="primaria" 'nome dell'indice che si vuole utilizzare (presente nella tabella Access)
End Sub
Private Sub Command1_Click()
'bottone che attiva l'apertura della tabella ed esegue varie operazioni
Dim Gmsg as String
ApriTabella 'apro la tabella
If Not opTabella Then
Gmsg = "ERRORE IN APERTURA TABELLA '" & NomeTabella & "'" & vbLf
Gmsg = Gmsg & "DataBase: " & pathDataBase
MsgBox(Gmsg)
Exit Sub
End If
'leggo un record con chiave numerica 12345, ">=", "<=" per start su accessi sequenziali
With tbTabella
.Seek "=", 12345 'si posiziona sulla chiave indicata
'non esiste
If .NoMatch Then
Response = MsgBox("Cliente 12345 inesistente, lo aggiungo", vbYesNo + vbQuestion, "NUOVO RECORD")
If Response = vbRetry Then
if AddnewOk(NomeTabella) <> 0 then
MsgBox("Errore in inserimento nuovo record")
Exit Sub
End If
Else
'esite, modifico il nome:
'attivo la modifica della tabella
If EditOk(NomeTabella) <> 0 then
MsgBox("Errore in modifica record")
Exit Sub
End If
!Nome="GECSI" 'dove Nome è il campo della tabella con il nome del cliente
'effettuo l'aggiornamento della tabella
If UpdateOk(NomeTabella) <> 0 then
MsgBox("Errore in aggiornamento record")
Exit Sub
End If
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
ChiudiTabella
Set WkDataBase = Nothing
Set DbDataBase= Nothing
End Sub
Saluti e buon lavoro
Guido
by GECSI
www.gecsi.i