Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Field von ADODB.Recordset auslesen

Forumthread: Field von ADODB.Recordset auslesen

Field von ADODB.Recordset auslesen
20.09.2016 08:22:57
ADODB.Recordset
Halli hallo =)
Ich würde Gerne
von einem Field auslesen aus welcher Tabelle der Datenbank es kommt ist so etwas möglich ?

Dim con As New ADODB.Connection
Dim RS As New ADODB.Recordset
Dim fl As Field
For Each fl In RS.Fields
fl.xxxxx ' TabellenName wo das Field zugehört also zb. dbo.Tb1
next
Gruß Basti
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Field von ADODB.Recordset auslesen
20.09.2016 11:03:41
ADODB.Recordset
https://www.herber.de/forum/messages/1515028.html
Hi Basti
Du holst das Feld resp. die Daten nicht mehr aus der Tabelle sondern aus dem Recordset. Die Tabelle müsste egal sein.
Worin besteht das eigentliche Problem?
cu
Chris
Anzeige
AW: Field von ADODB.Recordset auslesen
21.09.2016 07:24:11
ADODB.Recordset
Hey Chris =)
Ja nur wenn ich die Tabellen verbinde kommen beim dem Rs von jeder Tabelle Spalten die, die Selben Spalten Namen haben wie ZB. ID ist in jeder Tabelle enthalten.
Um Bestimmte Spalten im RS auzuwählen müsste ich dann immer Rs.field(Nummer) und kann nicht RS!.ID eingeben da er immer die Letzte Spalten im Rs mit dem Namen ID sucht
Oder gibt es eine Lösung spalten aus dem RS zu löschen ?
Gruß Basti
Anzeige
AW: Field von ADODB.Recordset auslesen
21.09.2016 08:32:57
ADODB.Recordset
Hi Basti
SELECT * FROM ...
Der Stern ist Platzhalter und holte pauschal alle Daten. Alternativ kannst du aber auch gezielt Felder in den Recordset laden.

SELECT tb1.ID, tb2.EinFeld FROM ...
Somit hast du nur noch eine ID im RS.
Wenn du nun aber zwingend beide ID brauchst, dann müsste es auch möglich sein, einen Alias Feldnamen zu vergeben.
SELECT tb1.ID, tb2.ID AS meineAndereID, tb2.EinFeld FROM ...
Vielleicht müsste man aber auch hinterfragen, ob es sinnvoll ist zwei Feldern mit unterschiedlichem Inhalt den gleichen Namen zu geben.
cu
Chris
Anzeige
AW: Field von ADODB.Recordset auslesen
21.09.2016 13:32:29
ADODB.Recordset
Ah Super genau das mit dem tb2.ID AS meineAndereID habe ich gesucht =D
Danke =)
;
Anzeige
Anzeige

Infobox / Tutorial

ADODB.Recordset in Excel VBA nutzen


Schritt-für-Schritt-Anleitung

Um ein ADODB.Recordset in Excel VBA zu nutzen, folge diesen Schritten:

  1. Verweis hinzufügen: Stelle sicher, dass in Deinem VBA-Projekt ein Verweis auf die Microsoft ActiveX Data Objects-Bibliothek gesetzt ist. Gehe dafür zu Extras > Verweise und aktiviere die entsprechende Bibliothek (z.B. Microsoft ActiveX Data Objects 2.x Library).

  2. Verbindung zur Datenbank aufbauen:

    Dim con As New ADODB.Connection
    con.ConnectionString = "Provider=SQLOLEDB;Data Source=DeinServer;Initial Catalog=DeineDatenbank;User ID=DeinBenutzer;Password=DeinPasswort;"
    con.Open
  3. Recordset erstellen:

    Dim RS As New ADODB.Recordset
    RS.Open "SELECT * FROM DeineTabelle", con
  4. Felder durchlaufen:

    Dim fl As ADODB.Field
    For Each fl In RS.Fields
       Debug.Print fl.Name ' Gibt den Namen des Felds aus
    Next fl
  5. Recordset schließen:

    RS.Close
    con.Close

Häufige Fehler und Lösungen

  1. Fehler: "Die Verbindung zur Datenbank kann nicht hergestellt werden"

    • Lösung: Überprüfe die Verbindungszeichenfolge. Stelle sicher, dass Servername, Datenbankname, Benutzername und Passwort korrekt sind.
  2. Fehler: "Das Recordset ist leer"

    • Lösung: Überprüfe die SQL-Abfrage. Möglicherweise gibt es keine Daten in der angegebenen Tabelle.
  3. Fehler: Mehrere Felder mit dem gleichen Namen

    • Lösung: Verwende Aliase in Deiner SQL-Abfrage, um Konflikte zu vermeiden. Zum Beispiel:
      SELECT tb1.ID, tb2.ID AS MeineAndereID FROM tb1 JOIN tb2 ON tb1.ID = tb2.ID

Alternative Methoden

  • Direktes Arbeiten mit rs.fields: Du kannst auf Felder direkt über ihre Indizes zugreifen. Zum Beispiel:

    Dim ersteID As Variant
    ersteID = RS.Fields(0).Value ' Zugriff auf das erste Feld
  • Verwendung von Parameterabfragen: Du kannst Parameter in SQL-Abfragen verwenden, um sicherzustellen, dass nur die benötigten Daten abgerufen werden.


Praktische Beispiele

  1. Daten aus einem Recordset in ein Excel-Arbeitsblatt übertragen:

    Dim zeile As Integer
    zeile = 1
    Do While Not RS.EOF
       For i = 0 To RS.Fields.Count - 1
           Cells(zeile, i + 1).Value = RS.Fields(i).Value
       Next i
       RS.MoveNext
       zeile = zeile + 1
    Loop
  2. Felder nach bestimmten Kriterien filtern:

    RS.Open "SELECT * FROM DeineTabelle WHERE Bedingung", con

Tipps für Profis

  • Effiziente Abfragen: Lade nur die benötigten Felder in den ADODB.Recordset, um die Performance zu verbessern. Statt SELECT * verwende:

    SELECT ID, Name FROM DeineTabelle
  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung in Deinem VBA-Code, um unerwartete Fehler beim Zugriff auf das Recordset zu handhaben:

    On Error GoTo Fehlerbehandlung
    ' Dein Code hier
    Exit Sub
    Fehlerbehandlung:
      MsgBox "Ein Fehler ist aufgetreten: " & Err.Description

FAQ: Häufige Fragen

1. Wie kann ich auf ein bestimmtes Feld im Recordset zugreifen?
Du kannst auf ein Feld entweder über den Namen oder den Index zugreifen:

Dim wert As Variant
wert = RS.Fields("FeldName").Value ' Zugriff über den Namen
wert = RS.Fields(0).Value ' Zugriff über den Index

2. Was sind Aliase im Kontext von ADODB.Recordset?
Aliase sind alternative Namen, die Du für Felder in Deiner SQL-Abfrage vergibst, um Namenskonflikte zu vermeiden. Beispiel:

SELECT tb1.ID, tb2.ID AS zweiteID FROM tb1 JOIN tb2 ON tb1.ID = tb2.ID

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige