PDA

View Full Version : QRCVDTAQ User abfragen



DEVJO
08-07-02, 08:58
Hi,
vielleicht kann mir ja jemand helfen. Wie kann ich eine DTAQ auf den User abprüfen der Sie gefüllt hat. Ich weiß zwar das man die Sender Informationen abrufen kann, aber leider nicht wie. Der USER PROFILE NAME beginnt an Stelle 18, ist 10 Zeichen lang, aber wie komm ich da ran, mit welchen Parametern muß ich die DTAQ aufrufen, und muß ich in der DTAQ selber noch was ändern, z.B. die den Schlüssel ansetzten, heillose Verzweiflung macht sich breit. :confused


[Dieser Beitrag wurde von DEVJO am 08. Juli 2002 editiert.]

Spirou
08-07-02, 10:42
Hi DEVJO,

an den Inhalt der Dataque kommst du nur über den Befehl DMPOBJ oder das API QRCVDTAQ.
Beim API QRCVDTAQ zu beachten ist das beim lesen des DTAQ-Satzes dieser auch gleichzeitig in der DTAQ gelöscht wird.

Spirou

DEVJO
08-07-02, 11:00
<BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>Original erstellt von Spirou:
Hi DEVJO,

an den Inhalt der Dataque kommst du nur über den Befehl DMPOBJ oder das API QRCVDTAQ.
Beim API QRCVDTAQ zu beachten ist das beim lesen des DTAQ-Satzes dieser auch gleichzeitig in der DTAQ gelöscht wird.

Spirou

[/quote]

DEVJO
08-07-02, 11:05
Hey Spirou,
danke für die Antwort, bloß das Problem ist ich rufe die DTAQ schon QRCVDTAQ auf, und ich müßte wissen, wie ich mittels der Optionalen Parameter Groupe an den User Namen komme, welcher die DTAQ gefüllt hat.
Mein Job ist es nämlich den angemeldeten User nur die Anfragen anzeigen zu lassen, die auch von seiner Firma kommen, bzw. mit seinem UserProfil angefragt wurden, z.Z. sieht nämlich jeder Kunde alles auch andere Kunden Anfragen.

B.Hauser
09-07-02, 08:27
Hallo Spirou,

arbeitest Du mit einer geschlüsselten oder ungeschlüsselten DataQueue?

Um an die Sender-Informationen heranzukommen muss beim erstellen der DataQueue der Parameter Absender-ID hinzufügen (SENDERID) auf *YES gestellt werden.

Beim Empfangen der DataQueue erhälst Du in der Optionalen Parameter-Gruppe 1 die Sender-Informationen.

Zur Ausgabe kannst Du eine Datenstruktur mit folgendem Aufbau verwenden:
D DS_SndInf DS Sender-Information
D SI_BytRet 7P 0 Bytes Returned
D SI_BytAvail 7P 0 Bytes Available
D SI_Job 10 Job-Name
D SI_User 10 Benutzer
D SI_JobNo 6 Job-Nr.
D SI_CurUsr 10 Current User Prof.

Die Länge der Sender-Informationen gibst Du am besten wie folgt an:
%Size(DS_SndInf)

Bei dieser Variante musst Du alle DataQueue-Einträge lesen, die passenden herausfiltern und die restlichen zurückschreiben.

Um Dein Problem zu lösen, würde ich eine geschlüsselte DataQueue vorschlagen. Im Schlüssel werden das Benutzer-Profil und/oder die Firma hinterlegt.
Dazu kannst Du eine Datenstruktur verwenden.
z.B.:
D DQKEY DS
D DQUser 10
D DQFirma 3 0

Beim QRCVDTAQ gibst Du dann im Key den hinterlegten Schlüssel an und empfängst nur alle Dataqueue Einträge mit diesem Schlüssel (Parameter Key Order = 'EQ')

D PGMSTA SDS
D §§USER 254 263

C eval DQUser = §§User
C eval DQFirma = FIRNR

C callp (E) QRCVDTAQ(DQName : DQLib : DataQueue
C DQDatLen : DQDATA : *Zeros: Data / Wait Time
C 'EQ' : %Size(DQKey): DQKey : Key
C %Size(DS_SndInf): DS_SndInf) Sender

Ich hoffe, das hilft Dir etwas weiter

Birgitta

ERTH
09-07-02, 08:46
Hallo DEVJO,

es gibt auch ein API, dass nur die Einträge ausliest ohne zu löschen!
Ein Beispiel-Tool (DSPDQE) dafür, kannst Du Dir unter: http://www.alltel.net/~craigru/jcrcmd2.html#top_tag
herunterladen.
Diese Seiten kann ich auch allen anderen nur empfehlen, denn dort gibt es jede Menge nützliches zu entdecken.

Alles weitere wurde schon von B.Hauser geschrieben.

[Dieser Beitrag wurde von ERTH am 09. Juli 2002 editiert.]