F-Script Funktion: XQRS

XQRS

Mit XQRS kann der Interpreter das Resultat einer Query-Response identifizieren. Dies erlaubt den Zugriff auf die Response-Info eines Query-Requests und deren Informationen.
Funktion
Parameter
Beschreibung
XQRS
Query-Result-Objekt. Man kann mehrere solche Objekte gleichzeitig definieren und aktiv halten. Die Unterscheidung dieser Objekte geschieht über deren Namen. Der Name kann auch leer gelassen werden. Ein Query-Result-Objekt ohne Name bleibt so lange aktiv, bis ein neues Query-Result-Objekt erzeugt bzw. abgefüllt wird, welches ebenfalls keinen Namen trägt.
Beispiel
# Objekt-Name = PosListe
«XQRS(PosListe:Parameter)»

# Objekt ohne Name (default)
«XQRS(:Parameter)»
ok
Wurde der Service erfolgreich ausgeführt? 0/1.
cols
Anzahl Spalten im Query-Result-Objekt.
rows
Anzahl Zeilen im Query-Result-Objekt.
mKey
Message-Key
mText
Message-Text
duration
Ausführungszeit in ms.
Beispiel
«XQRS(myService:duration)»
Zusatzinformation: Die erste Spalte und die erste Zeile im Resultat tragen die Nummer 1.
col, SpaltenNr
Spalten-Name der Spalte mit SpaltenNr.
SpaltenNr
Attribut-Wert in dieser Spalte (Zeile 1)
SpaltenNr , ZeilenNr
Attribut-Wert in dieser Spalte auf dieser Zeile.
SpaltenName
Attribut-Wert in dieser Spalte (Zeile 1)
SpaltenName,ZeilenNr
Attribut-Wert in dieser Spalte auf dieser Zeile.
... > VariablenName
Attribut-Wert direkt einer Variablen zuweisen. Das ist vor allem bei Werten wichtig, welche mehr als 255 Zeichen beinhalten. (Meist Textblöcke)
Beispiel
«XQRS(myAddrText:AddrText.Text>textBlock)\A»
Übergeben von Message-Text in eine X-Variable.
XQRS(myQuery:mText)
Beispiel
«XQRS(myQuery:mText>MyVariable)»
SpaltenNr/Name,ZeilenNr,...
Falls an der entsprechenden Stelle ein Textblock steht, können bei der Ausgabe dieses Attribut-Wertes nach der ZeilenNr folgende Parameter verwendet werden:
(Es handelt sich hier um die üblichen Textblock Parameter)
Wnn
Textblock mit Breite nn drucken.
+1
Nach Ausgabe des Textblockes eine Leerzeile drucken.
#nn
Seitenkontrolle auf nn Zeilen ab der zweiten Zeile des Textblockes.
m>xx
Textblock mit linkem Rand xx ab der ersten Zeile des Textblockes.
Mxx
Textblock mit linkem Rand xx ab der zweiten Zeile des Textblockes.
OUTxxxx
Textblock in Datei xxxx speichern.
APPxxxx
Textblock an Datei xxxx anhängen.
Bei der Ausgabe mit ...\N» , wird die Anzahl Zeilen des Textblockes zurückgegeben.
Die Funktion «READ(ZeilenNr)» steht ebenfalls zur Verfügung.
redo
Der Service wird erneut ausgeführt und das Resultat hier in diesem Result-Objekt zurückgegeben. Diese Funktion gibt von sich selbst den Status ok zurück.
redo,
SuchOperation,
StartPositionIstOben,
AnzahlBOs
Diese Funktion wird benötigt, wenn weitere Rows geholt werden, bzw. ein "paging" durchgeführt werden soll.
Beschreiben möchte ich hier im Speziellen den Parameter StartPositionIstOben. Damit setzt der redo bei der ersten Row des vorherigen Resultates auf und bringt die nächsten Rows ab dort. Dass kann z.B. hilfreich sein, wenn im Result-Objekt an erster Stelle ein BO steht ab dem man eine bestimmte Anzahl weiterer BOs auslesen will. (Wobei zu beachten ist, dass je nach Konstellation einzelne BOs schon beim ersten Mal gelesen wurden.)
Falls die zusätzlichen Parameter nicht gebraucht werden, kann man sie leer lassen.
Die Möglichkeiten bzw. die Logik entspricht dabei 1:1 derjenigen von XRES im Zusammenhang mit GetBo.
redoData
Abfragen der Redo-Daten.
Syntax: «XQRS(<resultName>:redoData)»
Beispiel eines Query-Requests
«XQRY(req«X(RequestName)»:clear)»
«XQRY(req«X(RequestName)»:addArg=Main=Addr)»
«XQRY(req«X(RequestName)»:addArg=MaxRows=1)»
«XQRY(req«X(RequestName)»:addArg=Filter=Addr.Number=2020)»
«XQRY(req«X(RequestName)»:addArg=Columns=Addr.Number,Addr.FullName)»
«nXQRY(req«X(RequestName)»:execute>res«X(RequestName)»)\A»
# ------------------------------------------------------------------------------------------------------
«nz XQRS(res«X(RequestName)»:rows)=0\N»«GOTO(/)»