Anmelden

View Full Version : ODBC-Zugriff mit MS Access - SQL - Userabfrage



User
26-01-05, 08:01
Guten Morgen,

zuerst einmal, ich kenne mich "NULL" mit der AS/400 bzw. ISeries aus und kenne in SQL eigentlich nur den Befehl 'select'. Bin ein "normaler" PC-User.

Ich greife mittels ODBC und MS Access (GUI) auf eine ISeries - find ich echt spitze, wie einfach das ist.
Nun würde ich gerne mittels SQL den aktiven User einer PC-Session auslesen, um in MS Access je nach User die Funktionen freizuschalten bzw. zu sperren.
Ist dies möglich?

Schon mal VIELEN DANK!

Gruß
DAN

BenderD
26-01-05, 08:45
Hallo,

select user from sysibm.sysdummy1
besser wäre es allerdings diese Funktionalität über ein View Layer auf der AS400 abzubilden.

mfg

Dieter Bender


Guten Morgen,

zuerst einmal, ich kenne mich "NULL" mit der AS/400 bzw. ISeries aus und kenne in SQL eigentlich nur den Befehl 'select'. Bin ein "normaler" PC-User.

Ich greife mittels ODBC und MS Access (GUI) auf eine ISeries - find ich echt spitze, wie einfach das ist.
Nun würde ich gerne mittels SQL den aktiven User einer PC-Session auslesen, um in MS Access je nach User die Funktionen freizuschalten bzw. zu sperren.
Ist dies möglich?

Schon mal VIELEN DANK!

Gruß
DAN

Fuerchau
26-01-05, 08:45
Einfach "select USER, ... from ..." im Select einfügen, dann bekommst du automatisch im Feld USER den 10-stelligen Profilnamen mitgeteilt.

User
26-01-05, 09:19
Hallo,

vielen Dank für die Antworten, jedoch stehe ich da immer noch auf dem Schlauch:

Lösungsansatz 1 (BenderD):
"select user from sysibm.sysdummy1"
verstehe ich (einfacher User) doch als "select user from <Maschienenname>.<Bibliotheksname>"? - Funktioniert so nicht. Access will auf eine lokale Access DB (im Stammverzeichnis von Access) mit <Maschienenname> als Name zugreifen.

Lösungsansatz 2 (Fuerchau):
"select USER, ... from ..."
mmhhh ... kann ich da bitte weitere Infos bekommen, was da in "..." rein müßte.

Zusatzinformationen.
es gibt mehrer ISeries Maschienen, zur Vereinfachung der Maschienenname lautet "InfoCen1".
Bibliotheksname "OBJEKTE"
ODBC_Verbindungsbezeichnung "ODBC_AS"
-> es wird der lokale User benötigt, der vom PC aus angemeldet ist
VIELEN DANK

Gruß
DAN

BenderD
26-01-05, 09:31
Hallo,

sql versteht in der from Klausel bei zweistelligen qualifizierten Namen:
Bibliothek.Datei
User ist ein special register, das in der select Klausel (zum Beispiel) ohne jeden from erwähnt werden kann. sysdummy1 ist einfach eine Table mit einem Satz.

mfg

Dieter Bender


Hallo,

vielen Dank für die Antworten, jedoch stehe ich da immer noch auf dem Schlauch:

Lösungsansatz 1 (BenderD):
"select user from sysibm.sysdummy1"
verstehe ich (einfacher User) doch als "select user from <Maschienenname>.<Bibliotheksname>"? - Funktioniert so nicht. Access will auf eine lokale Access DB (im Stammverzeichnis von Access) mit <Maschienenname> als Name zugreifen.

Lösungsansatz 2 (Fuerchau):
"select USER, ... from ..."
mmhhh ... kann ich da bitte weitere Infos bekommen, was da in "..." rein müßte.

Zusatzinformationen.
es gibt mehrer ISeries Maschienen, zur Vereinfachung der Maschienenname lautet "InfoCen1".
Bibliotheksname "OBJEKTE"
ODBC_Verbindungsbezeichnung "ODBC_AS"
-> es wird der lokale User benötigt, der vom PC aus angemeldet ist
VIELEN DANK

Gruß
DAN

Fuerchau
26-01-05, 10:55
Du kannst den aktuellen User in JEDEM Select einer Tabelle abfragen.
Wenn du also auf eine bestimmte Tabelle verknüpft hast, ergänze (in der SQL-Sicht) bei den Feldern einfach um das Feld "USER".

Ggf. zeigt dir die grafische Sicht dann ein berechnetes Feld an bzw kann sie nicht mehr darstellen.

Somit hast du bei jeder Abfrage die Möglichkeit den User mitzulesen.

Auch eine Where-Klausel schafft dies. Enthält z.b. die AS/400-Tabelle in einem Feld den Benutzer-Namen kannst du mit

... where userfeld = USER ...

Die Satzauswahl auf den angemeldeten Benutzer beschränken.

User
26-01-05, 13:41
Vielen Dank für die Informationen.

Habe gerade verzweifelt versucht die Hinweise umzusetzen.
Nun habe ich mein Problem weiter eingrenzen können.

Der Select-Befehl mit Feld "USER" funktioiert, wie beschreiben, wenn ich den Befehl z.B. über den iSeries Navigator abgebe.
Gebe ich aber den Befehl in MS Access (GUI) ein, findet er das Feld nicht. Muss mal schauen, wie ich den SQL direkt aus MS Access an die DB abschicken kann.

Gruß
DAN

Sven Schneider
26-01-05, 20:52
Versuch's mal mit dem 3teiligen Namen.

"select USER from <RDBName>.<Schema>.<Tabelle>"

RDBName ist der Name der DB2/400-Datenbank i.d.R. der Systemname (WRKDIRE), wenn nur eine Datenbank existiert.

Fuerchau
26-01-05, 20:52
Ich sagte ja, das ist ein Pseudo-Feld und kann nur in der SQL-Sicht eingegeben werden !

Ach ja:
Bei einer verknüpften Tabelle geht das leider nicht. Du musst dafür eine SQL-Passthru-Abfrage erstellen, in der du den SQL-Select direkt eingibst.