VBA >> SQL

Bild

Betrifft: VBA >> SQL
von: Michael
Geschrieben am: 13.11.2003 11:11:30

Hallo zusammen,

ich habe folgendes Problem. Ich möchte in einem Skript Select abfragen generieren und nutze hierzu Variable die in einem Sheet gesetzt werden. Allerdings bekomme ich beim zusammensetzen des QuerryTables immer den Fehler 450, Anzahl der Argumente..... Ich habe mir schon alles Ausgeben lassen und konnte keinen Fehler finden.

'commandtext
sel = "select "
was = Range("c5")
from = " from " & Range("c6")
'tabl = Chr(10) & Range("c7")

'ODBC
con = ("Connection:=")
odb = Chr(34) & ("ODBC;")
ddsn = ("DSN=") & Range("c8") & ";"
uuid = ("UID=") & Range("c9") & ";"
ppwd = ("PWD=") & Range("c10") & Chr(34) & ","
dest = ("Destination:=")
rang = ("Range") & Chr(40) & Chr(34) & "a1" & Chr(34) & Chr(41)

With ActiveSheet.QueryTables.Add & Chr(40) & con & odb & ddsn & uuid & ppwd & dest & rang & Chr(41)
.CommandText = sel & was & from

gebe ich das 'With ActiveSheet.QueryTables.Add_(Connection:="ODBC;DSN=test;UID=test;PWD=test", Destination:=Range("a1"))
so an funktioniert es.

Vielleicht weiss jemand von euch eine Lösung

Vielen Dank
Michael

Bild


Betrifft: AW: VBA >> SQL
von: Nayus
Geschrieben am: 13.11.2003 11:58:11

Hi,
wie die Fehlermeldung sagt, können die Argumente im String nicht aufgelöst werden.
Versuch's doch mal mit:

With ActiveSheet.QueryTables.Add(Connection:=odb & ddsn & uuid & ppwd, Destination:=Range("A1"), Sql:=sel & was & from)

So funktioniert es auf jeden Fall bei mir.

Viel Erfolg,
Nayus


Bild


Betrifft: AW: VBA >> SQL
von: Michael
Geschrieben am: 13.11.2003 12:20:44

Danke Nayus,

aber so bekomme ich leider nur einen 1004 Fehler : "Anwendungs oder Objektdefinierter Fehler" zurück

Michael


Bild


Betrifft: AW: VBA >> SQL
von: Nayus
Geschrieben am: 13.11.2003 12:29:12

Hi,
also dann hier das komplette Makro, das ich zu Testzwecken erstellt habe.
Bei funktioniert es (Mit ORACLE ODBC-Treiber gegen eine ORACLE-DB).
Bitte prüfen:
Stehen in den Zellen die korrekten Werte?


Sub crSelect()
Dim odb, ddsn, uuid, ppwd, sel, was, from As String
sel = "select "
was = Range("c5")
from = " from " & Range("c6")
odb = ("ODBC;")
ddsn = ("DSN=") & Range("c8") & ";"
uuid = ("UID=") & Range("c9") & ";"
ppwd = ("PWD=") & Range("c10")
With ActiveSheet.QueryTables.Add _
(Connection:=odb & ddsn & uuid & ppwd, Destination:=Range("A1"), _
 Sql:=sel & was & from).Refresh
End With
End Sub


Viel Erfolg,
Nayus


Bild


Betrifft: AW: VBA >> SQL
von: Michael
Geschrieben am: 13.11.2003 15:17:00

Danke Nayus,

jetzt funktioniert es.
Habe dooferweise vor die Variable odb ein CHR(34) gesetzt..... so kann das natürlich nicht gehen.

nochmals Danke

Michael


Bild

Beiträge aus den Excel-Beispielen zum Thema " Makro anpassen ???"