ich beschäftige mich jetzt seid einiger Zeit mit VBA Excel und Access. Ich habe mir eine Funktion geschrieben, welche aus Access Tabellen Spalten in eine KomboBox schreibt. Diese Funktion funktioniert "eigentlich" sehr gut. Bei einigen Abfragen bekomme ich allerdings die fehlermeldung:
Unzulässige SQL-Anweisung 'delete' 'insert' 'select' oder... (Debugg geht auf die Zeile rst.Open Datenbank, Conn
da ich noch nicht so den großen überblick über die verbindung Excel Access habe hoffe ich das mir jemand helfen kann woran es liegt. Die namen sind korrekt, es geht nur bei bestimmten Abfragen (in Access) nicht. Diese Abfragen habe ich auch schon gelöscht und neu erstellt. Ich komme einfach nicht weiter.
Die Abfragen in Access die nicht funktionieren
Die Abfrage heisst Req_Plastics
Achja ich nutze Office 2016 / 365
im Anschluss mein Funktion:
'Funktion zum befüllen von Komboboxen aus access
Public Function fc_Zugriff_Datenbank(ByRef cbx As Object, Datenbank As String, Tabelle1 As _
String, Optional Tabelle2 As String = "0")
Dim Conn As New ADODB.Connection 'Variable für Datenbank verbindung
Dim rst As New ADODB.Recordset 'Variable für Datenbank verbindung
Dim i As Integer
With uf_Main
cbx.Clear
' erstellen der Verbindung
Conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & p_DatenbankPfad
'Welche tabelle soll mit welcher verbindung geöffnet werden
rst.Open Datenbank, Conn
' wenn die Tabelle nicht leer ist soll er folgende Schleife starten
Do Until rst.EOF
With cbx
If Tabelle2 = "0" Then
.AddItem rst.Fields(Tabelle1)
Else
.AddItem rst.Fields(Tabelle1) & " " & rst.Fields(Tabelle2)
End If
End With
' zum nächsten Datensatz
rst.MoveNext
Loop
' schließen der Tabelle
rst.Close
End With
' zurücksetzten der Variabeln
Set rst = Nothing
Set Conn = Nothing
End Function
Und hier der Aufruf für die Funktion und die Constanten welche ich global definiert habe
Public Const p_AbfragePlastic = "Req_Plastics"
Public Const p_SpalteMethode = "Methode"
Private Sub ob_Kunststoff_Click()
'Befüllen der Kombobox aus datenbank je nach dem welche ob ausgewählt ist
If ob_Kunststoff.Value = True Then
Call fc_Zugriff_Datenbank(uf_Main.cbx_ProdMeth, p_AbfragePlastic, p_SpalteMethode)
cbx_ProdMeth.Enabled = True
End If
End Sub