Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1624to1628
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

KomboBox aus Access Datenbank befüllen

KomboBox aus Access Datenbank befüllen
16.05.2018 16:14:35
Andreas
Hallo Zusammen,
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
Userbild
Userbild
Userbild
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

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: KomboBox aus Access Datenbank befüllen
16.05.2018 17:57:28
ChrisL
Hi Andreas
Ist Variable p_DatenbankPfad leer?
cu
Chris
AW: KomboBox aus Access Datenbank befüllen
17.05.2018 07:53:41
Andreas
Hi Chris,
nein die Variable wird auch global als constante erzeugt. Und beim Ausführen der Userform funktioniert der abruf bei der einen aktion und bei der anderen nicht. Ich vermute das es irgendwas mit dem Abruf in Access selber zu tun hat, da wenn ich die Variablen p_AbfragePlastic und p_SpalteMethode zu einer anderen Tabelle ändere, funktioniert es.
Userbild
mfg
Andreas
AW: KomboBox aus Access Datenbank befüllen
17.05.2018 08:37:50
ChrisL
Hi Andreas
Ich weiss auch nicht. Die fehlende Pfadangabe ist mir nur spontan aufgefallen.
cu
Chris
Anzeige
AW: KomboBox aus Access Datenbank befüllen
17.05.2018 09:18:31
Luschi
Hallo Andreas,
zeige doch mal den SQL_Coder der Abfrage 'reg_Plastics' und nicht den Entwurfsmodus:
- verwendest Du Jokerzeichen wie '*' oder '?', die müsen in ADODB.Recordset
  anders geschrieben werden
- hast Du in der Tabelle sehr lange Feldbezeichnungen
- oder gar Zeichen im Feldnamen, mit denen ADODB nicht klar kommt.
fragt sich Luschi
aus klein-Paris
AW: KomboBox aus Access Datenbank befüllen
17.05.2018 10:43:00
Andreas
Hallo Luschi,
die SQL ansicht sieht wie folgt aus
SELECT Gen_ProdMeth.ID, Gen_ProdMeth.Methode
FROM Gen_ProdMeth
WHERE (((Gen_ProdMeth.Rubber)=True));

keinerlei Sonderzeichen in den Feldbezeichnungen. die der Name der Spalte ist Methode und die inhalte haben max. 20 Zeichen inkl. Leerzeichen.
und wie gesagt mit der Tabelle (Feldname und bezeichnung ja die selben) Funktioniert die Funktion
mfg
andreas
Anzeige
AW: KomboBox aus Access Datenbank befüllen
17.05.2018 11:00:30
Robert
Hallo Andreas,
nurt eine Vermutung, aber kann es vielleicht hieran liegen. In der Zeile
 .AddItem rst.Fields(Tabelle1) & " " & rst.Fields(Tabelle2) 

befüllst Du die Kombobox mit Werten aus den Datenfelder mit den Variablennamen Tabelle1 und Tabelle2. Tabelle1 gibst Du beim Aufruf mit "Methode" mit, Tabelle2 aber nicht. Da dieser Paramater optional und mit dem Standardwert "0" belegt ist, sucht die Prozedur das Datenfeld "0", und das gibt es nicht.
Gruß
Robert
AW: KomboBox aus Access Datenbank befüllen
17.05.2018 11:09:37
Andreas
Hallo Robert,
danke für deinen Tipp, aber ich habe den Fehler gerade selber gefunden... mein SQL String hat schlichtweg gefehlt. kann mir zwar immer noch nicht erklären warum das dann teilweise funktioniert hat.
Vielen dank an alle die mir versucht haben zu helfen
Anzeige
AW: KomboBox aus Access Datenbank befüllen
17.05.2018 12:32:42
Luschi
Hallo Andreas,
diese Antwort offenbart doch nur, wie wenig Ahnung Du vom Umgang mit Vba-Code hast:
- Setzen von Haltepunkten (Breakpoints) mir F9-Taste im Code
- schrittweises Durchlaufen des Code mit F8-Taste (steppen)
- mit Hilfe des Direktfensters (Strg+G) Zwischenwerte sich anzeigen lassen
- Überwachen von Zwischenergebnissen im Überwachungsfenster
- usw usf.
Und wenn jetzt Deine Aufklärung so aussieht:
- da hat was gefehlt
- ich weiß aber nicht warum
- na dann Prost Mahlzeit!!!
Gruß von Luschi
aus klein-Paris
AW: KomboBox aus Access Datenbank befüllen
17.05.2018 19:55:31
Andreas
Hallo Lusche
Habe ja auch gesagt das ich erst Anfänger bin. Aber es ist schon merkwürdig das es bei einigen teilen funktioniert hat. Es hat ja nicht der gesagte string gefielt sondern nur ein teil von diesem. Ich generiere mir jetzt die Abfrage über den String und nutze keine fertige aus Access. Also war die aussage von mir es hat der string gefehlt falsch. ich mache es jetzt nur anders. So das es funktioniert.
Gruss
Andreas
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige