PDA

Vollständige Version anzeigen : Pass-Through


TOM_WB
18.01.2002, 10:28
Hallo,
habe eine Pass-Through Abfrage geschrieben und möchte gerne in der WHERE - Klausel den Feldinhalt aus einem Formular einfügen:
SELECT
FU1.FU_NO as FU_NO
FROM
AOP.FUNCTIONUNIT FU1
WHERE
(FU1.FU_NO = [Formulare]![Formular1]![Text0]);

Erhalte aber immer wieder eine Fehlermeldung: [Oracle][ODBC][ORA]ORA-00936: missing expression (#936)!

Kann mir jemand helfen?

Sascha Trowitzsch
18.01.2002, 10:35
Hm, Oracles SQL kenne ich nicht.
Aber erstmal ist zu vermuten, dass
FUNCTIONUNIT FU1 in Klammern zu setzen ist:
[FUNCTIONUNIT FU1]

(Und dann glaube ich auch nicht, dass man als Parameter einfach ein Formularfeld angeben kann.)

Ciao, Sascha

erwin
19.01.2002, 19:06
wie Sascha schon angedeutet hat: Das "hüpfende Komma" bei PT-Queries ist ja, dass sie am DB-Server (in deinem Fall also ORACLE) ausgeführt werden. Dh. muss dann die SQL-Konvention des DB-Servers Verwendung finden, was natürlich impliziert, dass keinerlei Access-Obj.Verweise oder VBA-Funktionen bei Oracle funktionieren.

Dh. du musst selber dafür sorgen, dass etwaige solche Ausdrücke bzw. Verweise aufgelöst werden, BEVOR die Query an den DB-Server gesendet wird zB.:

currentdb.querydefs("DeinePT").SQL =
"SELECT .... WHERE (FU1.FU_NO = " & [Forms]![Formular1]![Text0] & ");"

wobei ggf. noch Literalbegrenzer für Felddatentypen "Text" oder "Datum" fehlen.

HTH erwin...

wolfskind
21.02.2005, 12:53
Hallo zusammen,
ich beschäftige mich gerade mit dem gleichen Thema...
Wenn man in Access eine PT Abfrage erstellt und nach Oracle schickt, dann mag Oracle das Semicolon am Ende überhaupt nicht.
Mich würde interessieren, wie ihr die Passwortabfrage des ODBC- Treibers beantwortet, wenn ihr PT Abfragen mit VBA erstellt.

Gruß vom Wolfskind

TOM_WB
22.02.2005, 07:17
Hallo,

also ich habe das wie folgt gelöst:

Dim dbs As DAO.Database, qdf As QueryDef, strSQL, connect_string As String

Set dbs = CurrentDb()
Set qdf = dbs.CreateQueryDef("Name")
connect_string = "ODBC;DSN=" & dsn & ";UID=" & uid & ";PWD=" & PWD & ";DBQ=AOP_p;DBA=W;APA=T;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;FRL=F;PFC=10;TLO=0; "
qdf.Connect = connect_string
qdf.ReturnsRecords = True

Die Variable "uid" und "PWD" ergänzen die Anmeldung.

Viel Erfolg!