|
|
InhaltWeitere konkrete fachliche Abfragemuster siehe auch hier unter 'weitere Beispiele' Kurzbeschreibung Hit-AbfragenEine Hit-Abfrage wird über den R(etrieve)-Befehl ausgeführt. Man gibt die Tabelle an, die abgefragt werden soll, dann die Felder, die ausgegeben werden sollen und schließlich noch die Abfragebedingung. Diese vier Teile gibt man wie folgt an (siehe auch Hit-Protokoll):
Die Ausgabefelder können zudem Abfragefunktionen wie $ALPHALOM() oder #BESTREG() enthalten (mehr dazu bei den Hit-Abfragefunktionen). Abfragen im HitBatchDer HitBatch ist eigentlich für Abfragen nicht gedacht, da er nur das Melden von Daten vereinfachen soll. Es lassen sich aber dennoch Abfragen damit ausführen, jedoch mit den Formaten, die zum Melden gedacht sind. Die Ini-Datei muß dazu in einem Set analog zu den Meldungen den Parameter MELDUNG passend setzen, als COMMAND entweder einen Stern '*' (nur wenn der COMMAND in der Datendatei INFILE dabei ist) oder ein 'RS' (evtl. incl. Subcodes) und OUFILE kann auf eine Ausgabedatei verweisen, in das das Ergebnis der Abfrage geschrieben wird. Beispiel:
Auch hier ist CSVIN, CSVOUT und CSVLOG auf 0, 1 oder 2 zu setzen, um anzuzeigen, in welchem Modus der HitBatch arbeiten soll:
Allgemeiner Aufbau einer CSV-Datei für AbfragenEine CSV-Datei enthält für Meldungen in der ersten Zeile die Feldnamen und in den weiteren Datenzeilen die Daten analog zur Feldnamenzeile. Diese Struktur muß bei Abfragen auch beibehalten werden, d.h.:
Die Abfragezeile
wird in einer CSV-Datei in dieser Form angegeben:
oder wenn in der Ini-Datei der <BEFEHL> in COMMAND angegeben wird:
Beispiel:
'*' steht für die Ausgabe aller Spalten der entsprechenden Tabelle, die 'BW'-Bedingung schränkt die Abfrage auf den Betriebsnummernbereich ein. Abfragefunktionen wie $ALPHALOM() oder #BESTREG() werden in die erste Zeile eingetragen und zwar immer hinter eine Feldliste, d.h.: <AUSGABEFELDER> = <FELDLISTE>;<ABFRAGEFUNKTIONEN> Wird die COMMAND-Spalte in die CSV-Datei übernommen (d.h. COMMAND im Ini-File ist auf * gesetzt), dann steht sie wie bei Meldungen immer in der ersten Spalte. Der Name der Spalte ist auch '*'. Das Beispiel könnte demnach auch so aussehen:
oder in Strict-CSV:
WICHTIG: Enthält der Befehl mehrere Subcodes, dann muß er bei Strict-CSV (CSVIN=0) hex-codiert werden, d.h. die darin auftretenden Semicolons müssen als '%3B' geschrieben werden, damit diese nicht als normale Feldtrenner aufgefaßt werden. Analog dazu muß bei Readable-CSV (CSVIN=1) der gesamte Befehl einschließlich der Subcodes in doppelte Hochkomma eingeschlossen werden (wie im Beispiel). Bei einem einzelnen Subcode ist dies nicht nötig. Besonder Hinweis
Antwortformat des HitBatchDer HitBatch unterscheidet hier zwischen zwei Ausgabearten. Einfache AusgabeWird nur eine einfache Abfrage ohne Abfragefunktionen oder Abfragen mit Inline-Funktionen verwendet, dann erhält man eine CSV-Liste mit Feldnamenzeile und den ermittelten Daten, z:B.:
oder mit Inline-Funktion:
Semi-komplexe AusgabeAbfragen mit Abfragefunktionen (also mit Newline- und Mixline-Funktionen) erzeugen eine gestaffelte Ausgabe, die eine teilweise normalisierte Form hat. Beispielabfrage:
Diese soll zur Betriebsnummer 276090000000002 die BNR15 in aufbereiteter Form ausgeben und zu dieser Betriebsnummer den Bestand im Zeitraum von 1.11.99 mit 30.11.99 mit allen Spalten und den Bestand am 4.1.2000 mit den Spalten GEB_DATR und GESCHL_R ausgeben. (Die Beispielabfrage muß für den HitServer natürlich in einer Zeile stehen; sie wurde nur wegen ihrer Länge aufgeteilt.) Die zwei Zeilen in einer CSV-Inputdatei sehen dann wie folgt aus (die drei Teile farblich gekennzeichnet):
Im Ini-File muß dann COMMAND auf * stehen, weil der Befehl (hier rot) als eigene Spalte vorkommt und MELDUNG ist BETRD. Das selbe Ergebnis der Abfrage liefert folgende CSV-Datei, wenn COMMAND im Ini-File auf RS steht:
Das Ergebnis zum Beispiel liefert der HitBatch in die bei OUFILE definierte Datei (oder in die Konsole, wenn OUFILE nicht definiert ist), wenn CSVOUT=1 ist:
(Die langen Zeilen wurden gekürzt und hinten mit '...' versehen) Wie zu erkennen ist, besteht die Ausgabedatei aus der Feldnamenzeile und drei Blöcken gleichartigen Inhalts. Jede Abfragefunktion erzeugt dabei einen eigenen Ausgabeblock. Die Funktion $ALPHABNR(BNR15) lieferte die erste Zeile nach der Feldnamenzeile und füllte die entsprechende Spalte mit einer aufbereiteten BNR15, die als Zeichenkette interpretiert werden soll. Die zweite Funktion #BESTREG(01.11.1999;30.11.1999) liefert den nächsten Block mit fünf Datenzeilen mit allen Spalten, die #BESTREG ausgibt. Der letzte Block lieferte zur Funktion #BESTREG(04.01.2000;04.01.2000/GEB_DATR;GESCHL_R) drei Zeilen, bei denen nur die Spalten GEB_DATR und GESCHL_R gefüllt sind. Der HitBatch erzeugt dabei nie doppelte Spalten, sondern nutzt bereits vorhandene aus. Davon ausgenommen sind die Funktionsnamen-Spalten selbst (im Beispiel #BESTREG), die der HitServer als Spalten mitliefert. Um diese teilweise normalisierten Daten in einer eigenen Datenbank weiterzuverwenden, genügt es, die Datei blockweise einzulesen und jeweils die Spalten in den entsprechenden Feldern der Tabelle zu füllen. Ein kleines Programm kann diese Datendatei auch vollständig denormalisieren, so dass jede Spalte in jeder Zeile mit Daten gefüllt ist. Beispiele Hit-Abfragen und dazugehörige CSV-Dateieinträge
Zurück zum Anfang |