Excel to Access

Aus Thomas Wiki
Zur Navigation springen Zur Suche springen

Abfragen der Daten in einer Access Datenbank aus Excel.

Schritte

  1. Definieren der Objekte
  2. Verbinden zur Datenbank
  3. Abfrage definieren
  4. Abfrage ausführen
  5. Ergebnis anzeigen
  6. Bereinigen der Objekte


Beispiel

Const DBProvider As String = "Microsoft.ACE.OLEDB.12.0"
Const DBFileName As String = "C:\Users\Ich\Documents\Datenbanken\Mydatabase.accdb"

Public Sub CountRecords()
    
    ' Definieren der Objekte
    Dim cn As Object
    Dim rs As Object
    Dim strSql As String
    Dim strConnection As String
    
    ' Verbinden zur Datenbank
    Set cn = CreateObject("ADODB.Connection")
    strConnection = "Provider=" & DBProvider & "; Data Source=" & DBFileName & ";"
    
    ' Abfrage definieren
    strSql = "SELECT Count(*) FROM MyTable;"
    
    ' Abfrage ausführen
    cn.Open strConnection
    Set rs = cn.Execute(strSql)
    
    ' Ergebnis anzeigen
    MsgBox rs.Fields(0) & " rows in MyTable"
    
    ' Bereinigen der Objekte
    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
    
End Sub

Kopieren einer Abfrage mit Parametern

Das folgende Beispiel setzt eine Datenbank Spielwiese.accdb mit Personaldaten mindesten drei Feldern Name, Vorname, GebDat voraus.

Es wird das Geburtsjahr abgefragt und das Abfrageergebnis ab der aktiven Zelle eingefügt.

Const SpwDBProvider As String = "Microsoft.ACE.OLEDB.12.0"
Const SpwDBPath As String = "C:\Users\thomas1arend\Documents\Datenbanken\"
Const SpwDBFile As String = "Spielwiese.accdb"

Public Sub InsertQuery()

' Step 1: Declare your variables
' Definieren der Objekte
  Dim cn As Object
  Dim rs As Object
  Dim strSql As String
  Dim strConnection As String
  Dim Jahr As Integer
  
  Jahr = Application.InputBox("Bitte ein Jahr eingeben", 1)
  
  ' Verbinden zur Datenbank
  Set cn = CreateObject("ADODB.Connection")
  strConnection = "Provider=" & SpwDBProvider & "; Data Source=" & SpwDBPath & SpwDBFile & ";"
    
' Abfrage definieren
  strSql = "SELECT Personen.GebDat, Personen.Name, Personen.Vorname FROM Personen WHERE (((Year([GebDat])) = " _
    & Str(Jahr) _
    & " )) ORDER BY Personen.GebDat, Personen.Name, Personen.Vorname;"
       
' Abfrage ausführen
  cn.Open strConnection
  Set rs = cn.Execute(strSql)
' Copy the recordset to Excel
  Selection.CopyFromRecordset rs
  
  MsgBox "Your Query has been Run"

End Sub


27.03.2000 Kammer Wolfgang
28.04.2000 Dietze Cristine
18.05.2000 Lauterbach Sigismondo
21.05.2000 Hafner Hilda
08.07.2000 Kayser Heindrick
21.07.2000 Bauer Jeremiah
08.08.2000 Höppner Murial
02.09.2000 Baumgarten Joann
12.09.2000 Keller Sanderson
23.11.2000 Blome Bellina
26.12.2000 Bauer Mayne