andyah

Access 2010 - Listenfeld an ADO-Recordset knüpfen

Hi NG,

wie kann ich ein Listenfeld an ein ADO-Recordset knüpfen. Die zugrundeliegende Datenquelle ist keine mit Access verknüpfte ODBC Datenquelle.

Gruß
Andy

PS: Ich habe es gerade mit "Listenfeld.Recordset = rs" versucht und bekomme den Fehlercode 3265
Da Auslesen eines einzelnen Feldes per Recordset funktioniert.
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 228268

Url: https://administrator.de/forum/access-2010-listenfeld-an-ado-recordset-knuepfen-228268.html

Ausgedruckt am: 25.06.2025 um 13:06 Uhr

colinardo
colinardo 31.01.2014 aktualisiert um 12:07:41 Uhr
Goto Top
Hallo Andy,
warum erstellst du keine Datenverknüpfung zu deiner ODBC-Quelle Tab: Externe Daten > Importieren und Verknüpfen > ODBC-Datenbank.
Damit lässt sich eine Tabelle in deiner Datebank einrichten welche mit dieser Datenquelle synchron ist, und welche dann als Quelle für den Inhalt deines Listenfeldes dienen kann.

Ansonsten durchlaufe alle Zeilen eines Recordsets und erstelle für jede Zeile einen Listeneintrag...nach dieser Art und Weise:
Set rs = CurrentDb.OpenRecordset("Tabelle")  
rs.MoveFirst
While Not rs.EOF
   Liste1.AddItem rs.Fields("Spalte").Value  
   rs.MoveNext
Wend

Grüße Uwe
AndyAh
AndyAh 31.01.2014 aktualisiert um 12:31:49 Uhr
Goto Top
Hi Uwe,

ich möchte die Userverwaltung des SQL-Servers nutzen. Beim Durchlauf des Recordsets ergab sich der Fehler:6014

Hie mal das ganze Listing:

Private Sub Form_Load()

   Dim connstr As String
   Dim sql As String
   Dim conn As New ADODB.Connection
   Dim rs As New ADODB.Recordset

   'user und passwort kommen aus einem Anmeldefenster  
   connstr = "DRIVER={MySQL ODBC 5.2 ANSI Driver};SERVER=127.0.0.1;DATABASE=adressen;" & "USER=" & user & ";" & "PASSWORD=" & passwort & "; OPTION=3"  
   
   conn.ConnectionString = connstr
   
   On Error GoTo LogonError
    
   conn.Open

   On Error Resume Next

  
   sql = "SELECT Nachname FROM mitglied"  
   rs.Open sql, conn, adOpenDynamic, adLockOptimistic
   rs.MoveFirst
   
   Fehlercode: 6026
   'Set Me!mitglieder.Recordset = rs  

  Fehlercode: 3265
   While Not rs.EOF()
     mitglieder.AddItem rs!Fields("Nachname").Value  
     rs.MoveNext
   Wend
   
   rs.Close
   conn.Close

LogonError:
    If Err.Number <> 0 Then
        MsgBox "Fehler beim Login zur Datenbank: " & Err.Number  
    End If
End Sub

Gruß
Andy
colinardo
colinardo 31.01.2014 um 12:27:19 Uhr
Goto Top
Das kommt vermutlich daher weil ein ADODB.Recordset nicht das selbe ist wie ein DAO.Recordset welches das Listenfeld erwartet. Du müsstest also mit deinem Recordset des SQL-Servers ein DAO-Recordset füllen und das dem Listenfeld zuweisen.

Grüße Uwe
colinardo
colinardo 31.01.2014 um 13:00:26 Uhr
Goto Top
Zitat von @AndyAh:
Hie mal das ganze Listing:
Private Sub Form_Load()

   Dim connstr As String
   Dim sql As String
   Dim conn As New ADODB.Connection
   Dim rs As New ADODB.Recordset

   'user und passwort kommen aus einem Anmeldefenster  
   connstr = "DRIVER={MySQL ODBC 5.2 ANSI Driver};SERVER=127.0.0.1;DATABASE=adressen;" & "USER=" & user & ";" & "PASSWORD=" & passwort & "; OPTION=3"  
   
   conn.ConnectionString = connstr
   
   On Error GoTo LogonError
    
   conn.Open

   On Error Resume Next

   sql = "SELECT Nachname FROM mitglied"  
   rs.Open sql, conn, adOpenDynamic, adLockOptimistic
   rs.MoveFirst
   
   ' Listbox leeren bevor die Mitglieder hinzugefügt werden.  
   For i = 0 To mitglieder.ListCount - 1
        mitglieder.RemoveItem 0
   Next
   While Not rs.EOF
     mitglieder.AddItem rs!Nachname
     rs.MoveNext
   Wend
   
   rs.Close
   conn.Close

LogonError:
    If Err.Number <> 0 Then
        MsgBox "Fehler beim Login zur Datenbank: " & Err.Number  
    End If
End Sub
AndyAh
AndyAh 31.01.2014 um 13:00:33 Uhr
Goto Top
Hi Uwe,

wie müsste dann die DAO Datenbank-Connection bzw der Connectionstring für MySQL ODBC 5.2 ANSI Treiber heissen?

Gruß
Andy
colinardo
colinardo 31.01.2014 um 13:04:38 Uhr
Goto Top
Zitat von @AndyAh:
wie müsste dann die DAO Datenbank-Connection bzw der Connectionstring für MySQL ODBC 5.2 ANSI Treiber heissen?
das geht IMHO nicht.
AndyAh
AndyAh 31.01.2014 um 13:15:28 Uhr
Goto Top
Hi,

und was ist mit dem Fehler in:

  Fehlercode: 3265 
   While Not rs.EOF() 
     mitglieder.AddItem rs!Fields("Nachname").Value   
     rs.MoveNext 
   Wend 

In der Schleifte sollte alles richtig sein, trotzdem bekomme ich die Fehlermeldung.

Gruß
Andy
colinardo
colinardo 31.01.2014 aktualisiert um 13:25:59 Uhr
Goto Top
Zitat von @AndyAh:

In der Schleifte sollte alles richtig sein, trotzdem bekomme ich die Fehlermeldung.
hatte ich oben doch oben bereits im Code korrigiert. Bei mir läuft dein obiges Konstrukt:
rs!Fields("Nachname").Value
nicht und auch die beiden Klammern hinter EOF sind Quatsch, da es eine Eigenschaft ist und keine Funktion.
machs innerhalb der Schleife entweder so:
mitglieder.AddItem rs!Nachname
oder so:
mitglieder.AddItem rs.Fields("Nachname").Value  
beachte den Punkt anstatt dem Ausrufezeichen hinter rs.
AndyAh
AndyAh 31.01.2014 um 13:24:41 Uhr
Goto Top
Hi,

dein letzter Vorschlag hat es gebracht. Danke.

Gruß
Andy