Aprire un database di access

di il
1 risposte

Aprire un database di access

Ragazzi ma si può su VB prendere i dati dalle tabelle di access (e quindi eseguire li le operazioni, non con le query)?

Se si aiutatemi!

1 Risposte

  • Re: Aprire un database di access

    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
Devi accedere o registrarti per scrivere nel forum
1 risposte