Zum Hauptinhalt springen

WseArg

WseArg(int1, alpha2[, int3]) : alpha

Ausführbar von Clients mit grafischer Oberfläche Ausführbar vom Server Ausführbar von der Web-Schnittstelle Ausführbar vom Druckprozessor Ausführbar von der ODBC-Schnittstelle

Argumente ermitteln

Details

Informationen von einer HTML-Seite können auf unterschiedlichen Wegen in die Funktionen der Web-Anwendung transportiert werden. Wird innerhalb einer HTML-Seite ein Link angeklickt, der zur Web-Schnittstelle führt, oder ein Formular abgeschickt, wird die Request-Prozedur ausgeführt. Innerhalb der Request-Prozedur kann auf den Query-String oder den Response-Body des Requests zugegriffen werden.

Einem Link können Parameter übergeben werden. Die Parameter werden von der eigentlichen URL durch ein "?" getrennt.

http://www.vectorsoft.de/scripts/c16_web.dll?page1=next

In diesem Fall wird page1=next als Query-String übermittelt. Der Name des ersten Parameters (page1) kann mit dem Aufruf WseArg ( _WseArgName , '' ) ermittelt werden. Ist der Name des Parameters bekannt, kann der Wert (next) mit WseArg ( _WseArgReq , 'page1' ) abgefragt werden.

Die Anzahl der Parameter ist nur über die Größe des Query-Strings beschränkt. Der Query-String darf 4 KB nicht überschreiten. In manchen Fällen kommt es allerdings schon bei Query-Strings die 1 KB überschreiten zu Problemen.

Werden mehrere Parameter übergeben, kann ebenfalls über die Reihenfolge der Parameter zugegriffen werden. Die Position des Parameters wird dabei in (int3) angegeben. Der Befehl WseArg ( _WseArgName , '' , 2 ) ermittelt den Namen des zweiten Parameters. Die Namen der Parameter können in (alpha2) eingeschränkt werden. Wird in (alpha2) 'p*' angegeben, wird die Auswahl der Parameter, auf die Parameter eingeschränkt, dessen Namen mit "p" beginnen. In dem Beispiel wird der Name des zweiten Parameters der mit "p" beginnt ermittelt. Spielt der Name keine Rolle, kann mit dem Befehl WseArg ( _WseArgReq , '' , 2 ) auch direkt auf den Wert zugegriffen werden.

info

Wird in der Konfiguration der Web-Schnittstelle festgelegt, dass die Benutzer-ID im Query-String ( web_uid_mode=query ) übertragen wird, ist der erste Parameter immer C16UID und der Wert die Benutzer-ID des Web-Benutzers.

Formulardaten werden auf die gleiche Weise übertragen. Innerhalb eines Formulars kann die Methode der Übertragung festgelegt werden. Dazu wird innerhalb des <form>-Tags method=get oder method=post angegeben. Die Formulardaten werden dann innerhalb des Query-Strings oder des Response-Bodys übertragen. Zum Ermitteln der Formulardaten spielt die Übertragungsmethode keine Rolle.

info

Gerade bei größeren Formularen sind die kritischen 1 KB schnell erreicht. Formulare sollten mit der Methode POST übertragen werden. Zudem werden so die Formulardaten nicht im Adressfeld des Browsers angezeigt.

Die Namen der Formularfelder und deren Inhalte können auf die gleiche Weise wie die Parameter eines Links ermittelt werden.

Innerhalb einer HTML-Seite können Funktionen aus der Applikation aufgerufen werden. Diese Aufrufe erfolgen mit der Anweisung C16.CALL() . Der aufgerufenen Funktion können Parameter übergeben werden. Diese Parameter können mit der Anweisung WseArg ( _WseArgCall , ...) ermittelt werden. Da die Parameter keine Namen besitzen, muss die Abfrage über die Reihenfolge der Parameter erfolgen. (alpha2) ist in diesem Fall immer ''.

Zur Ermittlung der Daten stehen verschiedene Wege zur Verfügung:

  • Ermittlung der Werte über die Position Dazu wird in (int1) _WseArgReq (Aufruf aus einem Request) oder _WseArgCall (Aufruf über C16.CALL() ), in (alpha2) '' und in (int3) die Position des Wertes übergeben. Existiert zu der übergebenen Position kein Wert wird ein Leerstring zurückgegeben. Bei der Ermittlung über die Position besteht keine Möglichkeit zwischen den Fällen "Wert ist leer" und "Wert ist nicht vorhanden" zu unterscheiden. In beiden Fällen wird eine leere Zeichenkette zurückgegeben.
// Ermittlung aller Parameter oder bis zum ersten leeren Parameter
tCounter # 1;
aArgValue # WseArg(_WseArgReq, '', tCounter);
while (aArgValue != '')
{
// Verarbeitung des Wertes
...
Inc(tCounter);
aArgValue # WseArg(_WseArgReq, '', tCounter);
}
  • Ermittlung des Wertes über den Namen Dazu wird zunächst der Name des Parameters ermittelt. Dies erfolgt mit dem Parameter _WseArgName in (int1). Die Namen können ähnlich wie die Werte über die Position ((alpha2) = '', (int3) = Position) ermittelt werden. Existiert zu einer Position kein Name, wird ein Leerstring zurückgegeben.
// Ermittlung aller Parameter
tCounter # 1;
aArgName # WseArg(_WseArgName, '', tCounter);
while (aArgName != '')
{
aArgValue # WseArg(_WseArgReq, aArgName);

// Verarbeitung des Wertes
...
Inc(tCounter);
aArgName # WseArg(_WseArgName, '', tCounter);
}

Zusätzlich kann in (alpha2) noch ein Suchwert mit angegeben werden. Es werden dann nur die Namen ermittelt, die dem Suchbegriff ähnlich (Operator =* ) sind. Nachdem der Name ermittelt ist, kann dessen Wert mit WseArg ( _WseArgReq , <Name>) ermittelt werden. Bei diesem Verfahren kann unterschieden werden, ob ein Name nicht vorhanden (der Name wird nicht ermittelt) oder der Wert leer ist (der Name wird ermittelt, als Wert wird ein Leerstring zurückgegeben).

  • Ermittlung von Funktionsargumenten Wird eine Funktion über das Kommando C16.CALL() aufgerufen, können die Argumente über die Reihenfolge mit dem Typ _WseArgCall abgefragt werden. Der Parameter (alpha2) ist dabei immer ''.