Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1312to1316
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

ADO sql

ADO sql
14.05.2013 13:32:06
eres
Zunächst einen herzlichen Gruß ins Forum,
mit nachfolgendem Code lese ich Daten aus einer Access-Datenbank via ADO:
Sub ADO_Zugriff()
Dim conn As New Connection
Dim rec As New Recordset
Dim ws As Worksheet
Dim sql As String
Dim lngI As Long
Set ws = ThisWorkbook.Worksheets("CODE ADO")
conn.Open "Provider=microsoft.jet.oledb.4.0;" + "Data Source=" + Sheets("Main").Range(" _
LA_AccessDB")
sql = "SELECT 'Vertrags-Nr', SUBAPP " & "FROM GLALLS"
rec.Open sql, conn
While Not rec.EOF
lngI = lngI + 1
ws.Cells(lngI, 1) = rec!'Vertrags-Nr' & rec!SUBAPP
rec.MoveNext
Wend
rec.Close
conn.Close
End Sub
Mein Problem ist, dass das Feld 'Vertrags-Nr" in der Datenbank eben mit Bindestrich bezeichnet ist. Im SELECT-Statement denke ich dies lösen zu können, indem ich dieses Feld in einfache Hochkommata stelle. Beim Schreiben aber funktioniert dies nicht, da
bei rec!'Vertrags-Nr' das erste Hochkomma als Kommentaranfang in VBA interpretiert wird.
Kann mir jemand sagen, wie ich rec!Vertrags-Nr korrekt ansprechen kann?
p.s. Auf die Bezeichnung in der Access-DB habe ich leider keinen Einfluß, da ich diese von einem Kunden bekomme, der den Aufbau nicht ändern möchte.
Bin für jeden Tipp sehr dankbar.
Gruß
erwin

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ADO sql
14.05.2013 13:42:16
Luschi
Hallo Erwin,
eine Lösung dazu findest Du hier: http://www.donkarl.com/?faq1.5
Gruß von Luschi
aus klein-Paris

AW: ADO sql
14.05.2013 15:14:13
eres
Hallo Luschi, danke für den interessanten Link.
Als Lösung wird vorgeschlagen:
Wenn du in Objekt- oder Feldnamen Sonder- oder Leerzeichen verwendest, dann bist du gezwungen, bei jedem Bezug darauf den Namen in eckige Klammern zu setzen. Das kannst du dir sparen bzw. Access machen lassen, indem du Sonderzeichen (wie z.B. Bindestriche) vermeidest und statt Leerzeichen den Unterstrich _ verwendest.

Die eckige Klammer funktioniert hier allerdings nicht:
ws.Cells(lngI, 1) = rec![Vertrags-Nr] & rec!SUBAPP
VBA bringt den Fehler: Ein Objekt, das dem angeforderten Namen ... kann nicht gefunden werden.
Hast Du noch eine Idee?
Danke & Gruß
erwin

Anzeige
'Vertrags-Nr' AS VertragNr (owT)
14.05.2013 14:02:19
EtoPHG

AW: 'Vertrags-Nr' AS VertragNr (owT)
14.05.2013 15:16:12
eres
Hallo Hansueli,
'Vertrags-Nr' AS VertragNr
ist wahrscheinlich das, was ich suche. Wie kann ich dies in meinen Code integrieren?
Gruß
erwin

AW: 'Vertrags-Nr' AS VertragNr (owT)
14.05.2013 15:22:37
EtoPHG
Hallo erwin,
Nein das ist nicht das was du suchst, das ist ein ALIAS Name für den Spaltennamen, aber
mit ADO kannst du die Columns des Recordsets nicht mit den Column-Names ansprechen!
Du suchst:
ws.Cells(lngI, 1) = rec.Fields(0) & rec.Fields(1)

Ob und wie der SQL funktioniert kann ich dir nicht sagen, aber den SQL String, denn du zuammensetzt kannst du z.B. in MSQuery direkt ausprobieren und testen ob ein Recordset zurückgeliefert wird.
Gruess Hansueli

Anzeige
AW: 'Vertrags-Nr' AS VertragNr (owT)
14.05.2013 15:36:52
Kawensmann
Hallo,
... mit ADO kannst du die Columns des Recordsets nicht mit den Column-Names ansprechen! ...
Ach, und das Folgende funktioniert nicht?
ws.Cells(lngI, 1) = rec.Fields("Vertrags-Nr") & rec.Fields(SUBAPP)
Gruß,
Kawensmann

Edit AW: 'Vertrags-Nr' AS VertragNr (owT)
14.05.2013 15:38:00
Kawensmann
Da fehlten noch Anführungszeichen ...
ws.Cells(lngI, 1) = rec.Fields("Vertrags-Nr") & rec.Fields("SUBAPP")

Edit AW: 'Vertrags-Nr' AS VertragNr (owT)
14.05.2013 15:41:29
eres
Problem gelöst.
Mit Hansueli's Antwort kam ich schon weiter.
Danke für den fertigen Code Kawensmann.
Auch Danke an Luschi für den informativen Link.
Wünsche allen im Forum noch einen schönen Tag.
Gruß
erwin
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige