Einzelnen Beitrag anzeigen

SneakL8

Registriert seit: 11. Feb 2016
24 Beiträge
 
#1

Wie user-abhängige Daten an View übergeben

  Alt 18. Jun 2017, 16:49
Datenbank: Advantage Database Server • Version: 10.1 • Zugriff über: TAdsQuery
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
  Mit Zitat antworten Zitat