PDA

Vollständige Version anzeigen : Parameter in QueryDef über ODBC (Excel VBA)


Bob
01.08.2001, 09:18
Hallo zusammen,
ich möchte mit einer Parameterabfrage (QueryDef) Daten
aus einer Oracle DB abholen.

Bei nachfolgendem code habe ich das Problem, das
die Parameter nicht erkannt werden.
Beispiel:
nach der Zeile .sql = sql ergibt qdf.parameters.count den
Wert 0.

Ich hoffe jemand hat eine gute Idee.
Evtl. mache ich ja auch was mit dem ws bzw. db Objekt falsch.

In der Hoffnung auf Antworten,
Bob Rod

Sub GetData()
Dim ws As DAO.Workspace
Dim sql As String
Dim rs As DAO.Recordset
Dim db As DAO.Database
Dim qdf As DAO.QueryDef

Const PUID = "USER"
Const PPW = "PASSWORT"
Const Dbn = "ora_1"

Dim ConnectStr As String

Set ws = DBEngine.CreateWorkspace("TEST", PUID, PPW, dbUseODBC)


sql = "PARAMETERS prm1 string; SELECT * from tblTest WHERE Fld1 = prm1"

ConnectStr = "ODBC;DATABASE=" & Dbn & ";UID=" & PUID & ";PWD=" & PPW &
";DSN=" & Dbn
Set db = OpenDatabase("", False, False, ConnectStr)

' temporäres QueryDef erzeugen
Set qdf = db.CreateQueryDef("")
With qdf
.Connect = ConnectStr
.sql = sql
.Parameters("prm1") = "'Meier'"
Set rs = .OpenRecordset()
rs.MoveLast
MsgBox (.Parameters("prm1") & " " & rs.RecordCount)
End With
End Sub

Stema
01.08.2001, 13:08
Hallo Bob,

was mir auffällt ist, daß Du keinen Namen für die DB angegeben hast.
Versuch's mal mit
Set db = OpenDatabase("DeineDB", False, False, ConnectStr)
oder
Set db = ws.OpenDatabase("DeineDB", False, False, ConnectStr)


Gruß Stema

Bob
01.08.2001, 13:48
Der connect String beinhaltet den ODBC DB namen.

Stema
01.08.2001, 15:02
Der Name (am Besten mit komplettem Netzwerkpfad) der DB ist aber eine Musseingabe. Wenn Du einen Leerstring als Namen angibst, funktioniert das sicherlich nicht.

Gruß Stema

[Dieser Beitrag wurde von Stema am 01.08.2001 editiert.]