ich konnte in den vergangenen Jahren schon sehr viel Wissen aus diesem Forum ziehen und bin immer sehr dankbar für diesen riesigen Pool an Informationen. Jetzt stehe ich aber leider vor einem Problem, zu welchem ich trotz intensiver Recherche noch nichts brauchbares finden konnte... Vielleicht steh ich auch einfach nur auf dem Schlauch (wie man so schön sagt).
Mein Problem:
Ich habe ein Tool programmiert, welches auf eine Access-Datenbank zugreifen soll, um dort eine bereits bestehende Abfrage (nennen wir sie "Abfrage 1") mittels SQL zu verändern. Anschließend greift das Tool auf eine andere Abfrage (nennen wir sie "Abfrage 2") derselben Datenbank zu, liest die "Ergebnisse" aus und überträgt sie ins Excel. Es ist anzumerken, dass "Abfrage 2" hierbei natürlich auf "Abfrage 1" beruht. Es stellt sich heraus, dass die Veränderung der "Abfrage 1" nicht funktioniert.
Nebenbei: Ich hab Office 2016.
Im Anschluss könnt ihr (ich bleib gleich beim "du") in vereinfachter Form meinen Code sehen:
------
Private Sub DatenLadenB2C()
Dim Datenbank As Object
Dim strPfad As String
Dim SQLAnweisung As String
Dim rs As Object
Dim Z, x As Integer
Dim anzahl As Integer
Dim Zielstring As String
strPfad = Sheets("Access-Daten").Cells(262, 3) 'Pfad auslesen aus Zelle
If strPfad = "" Or strPfad = "Falsch" Then 'Fehlerabfang
MsgBox "Fehler beim Öffnen"
Exit Sub
End If
Set Datenbank = CreateObject("ADODB.Connection") 'Datenbank öffnen
DBProvi = "Microsoft.ACE.OLEDB.12.0"
DBParameter = "Data Source=" & strPfad & ";Jet OLEDB:Engine Type=5;" & _
"Persist Security Info = False;"
Datenbank.Provider = DBProvi
Datenbank.ConnectionString = DBParameter
Datenbank.Open
Set rs = CreateObject("ADODB.recordset")
Zielstring = "abc"
SQLAnweisung = "SELECT blablabla, " & Zielstring & " AS Dingsda _
FROM [Abfrage 1] GROUP BY blablabla HAVING DiesUndDas;"
Debug.Print SQLAnweisung 'SQL sieht genau so aus wie es sein soll
Datenbank.Cursorlocation = 3 'hier soll die Abfrage verändert werden
rs.Open SQLAnweisung, Datenbank
rs.Close 'der Code läuft problemlos durch, aber mit der Abfrage _
passiert nichts... Kann mir hier jemand helfen?
SQLAnweisung = "SELECT * FROM [Abfrage 2]" 'Überschreiben der SQL-Anweisung
Datenbank.Cursorlocation = 3
rs.Open SQLAnweisung, Datenbank
rs.MoveLast
anzahl = rs.RecordCount
rs.MoveFirst
For x = 1 To anzahl
For Z = 169 To 170
Sheets("Access-Daten").Cells(Z, 54).Value = rs(0)
Sheets("Access-Daten").Cells(Z, 55).Value = rs(1)
rs.MoveNext
Next Z
Next x
rs.Close 'Dieser Abschnitt klappt ganz hervorragend
Datenbank.Close
End Sub
Ich bin der festen Überzeugung, dass ich das noch nicht richtig geblickt habe... Ist auch das erste Mal, dass ich Access und Excel verbindend nutze.Ich habe auch schon folgendes versucht:
CurrentDb.QueryDefs("Abfrage 1").Sql = "SELECT ..."
Da kommt bisher immer nur der mir unverständliche Laufzeitfehler 3001...Vielen Dank schonmal im Voraus!
Liebe Grüße,
Lenny