Hallo zusammen,
ich habe ne relativ komplexe Abfrage, die von einem Wert abhängt, der je User unterschiedlich ist.
Leider kann ich der View keine Parameter übergeben. Im Netz habe ich gefunden, dass man die Parameter stattdessen mittels einer temporären Tabelle übergeben kann. Das hab ich probiert, scheitere aber.
Was habe ich gemacht:
- Im DataDictionary eine View MyView angelegt: "select x from Tabelle where <dies und das> and UserID = :UserID"
- Im Programm wird die Abfrage "Select * from MyView" gemacht.
- Vor dem Open erfolgt ein
Query.ParamByName('UserID').AsString := <UserID>
=> Bringt zwar keinen Fehler bei der Definition, aber bei der Zuweisung des Parameters ist ":UserID" unbekannt.
- Abfrage geändert auf: "select x from Tabelle where <dies und das> and UserID in (select UserID from #CurrentUser)"
- Im Programm zuvor eine temp. Table angelegt mit "create table #CurrentUser (UserID cichar(8)); insert into #CurrentUser values (<UserID>);"
=> ARC meldet einen Fehler (temp. Tabelle nicht bekannt), selbst wenn ich sie mit dem
SQL-Tool im ARC anlege und anschließend die View speichere.
Jetzt meine Frage: klappt das nur mit im Programm zur Laufzeit angelegten Views oder gibt es eine Möglichkeit, im DataDictionary eine View anzulegen, der ein vom aktuellen User (bzw. Connection zur
DB) abhängigen Wert übergeben wird? Eine SP bringt mich hier auch nicht weiter, weil diese ja auch nicht an den Wert rankommt, oder?
Viele Grüße
Sneak-L8