f$SQLLies_in_PG (engl. f$SQLRead_to_PG)
f$SQLLies_in_PG (engl. f$SQLRead_to_PG)
Mit dieser Funktion werden beliebig viele Datensätze in eine indizierte Parametergruppe gelesen. Der Name der Parametergruppe muss ohne Index angegeben werden. Falls die Parametergruppe nicht indiziert ist, wird lediglich ein Datensatz gelesen. Falls die Spalten der Tabelle und die Parameter der Parametergruppe nicht übereinstimmen, werden lediglich diejenigen Parameter belegt, zu welchen es auch eine gleichnamige Spalte gibt. Nullwerte in der Datenbank bewirken, dass der Parameter auf LEER gesetzt wird. Gelesen wird solange, bis entweder kein Datensatz mehr gefunden wird, oder bis der maximale Index der Parametergruppe erreicht ist.
Falls die Parametergruppe beim Lesen vergrößert wird, geschieht dies aus performance Gründen in Blöcken, nicht zeilenweise. Dies bedeutet, dass z.B. beim Lesen von 5 Datensätzen die Größe der Parametergruppe auf 50 geändert wurde.
Anmerkung: Da das Aufbauen einer Verbindung etwas Zeit benötigt, sollte nicht für jede SQL-Funktion eine neue Verbindung hergestellt werden.
Anmerkung: Falls mit ODBC aus Excel gelesen wird, kann als Tabellenname der Name eines Datenbereichs angegeben werden. Dies hat aber den Nachteil, das bei Änderung der Anzahl belegter Zeilen unter Umständen der Datenbereich angepasst werden muss. Alternativ kann auch direkt von einem Blatt gelesen werden, wenn das Blatt wie eine Tabelle aufgebaut ist. Als Tabellenname muss [Blattname$] verwendet werden.
Anmerkung: Beim Lesen einer Tabelle in eine dynamisch erzeugte PG (Modus = 2 oder Modus = 12), welche Parameternamen mit Sonderzeichen enthält (wie z.B. Gehaeuse$Farbe), werden diese auch mit unzulässigen Sonderzeichen definiert und zur Laufzeit angelegt. Auf diese kann jedoch nicht mit regulären Mitteln / Funktionen direkt zugegriffen werden (auch nicht über den PG-Button während der Testausführung). Der Status und die Anzahl der gelesenen Datensätze werden korrekt ausgegeben. Ursache: Parameternamen dürfen in ePOS keine Sonderzeichen enthalten. Workaround: Verwenden Sie die Funktion f$LiesParameter zum Auslesen der einzelnen Parameter-Werte.
Syntax: | Status = f$SQLLies_in_PG(Kanal, SQL ,PG, NameAnzahl [,Modus]) | ||
| Argument | Typ | Bedeutung |
| Kanal | Ganzzahl | Kanalnummer der SQL-Verbindung |
| SQL | Zeichenkette | Der SQL Befehl, der den Zugriff auf die Daten bewirkt. |
| PG | Zeichenkette | Der Name der indizierten Parametergruppe, die gefüllt werden soll. |
| NameAnzahl | Zeichenkette | Der Name des Parameters, auf welchen die Anzahl der gelesenen Datensätze geschrieben wird. |
| Modus | Ganzzahl | Steuerung der Parametergruppenanpassung.: 0 : keine Aktion Anmerkung: Die Anpassung/ Definition der Parametergruppen findet nur in der aktuellen Ausführung statt. Die Definition der Parametergruppen im Entwicklungssystem wird nicht verändert. 10 : Der 1. Index der PG nach der Anzahl der gelesenen Datensätze wird auf UNDEF gesetzt. 11 - wie 1 + Der 1. Index der PG nach der Anzahl der gelesenen Datensätze wird auf UNDEF gesetzt. 12 - wie 2 + Der 1. Index der PG nach der Anzahl der gelesenen Datensätze wird auf UNDEF gesetzt. |
Ergebnis: | Ganzzahl | Fehlerstatus: 0 :Befehl wurde korrekt abgesetzt -1 :kein Datensatz gefunden -2 :noch mehr Datensätze gefunden -3 :die Parametergruppe wurde nicht gefunden -9999: Der SQL-Befehl war nicht erfolgreich. In diesem Fall kann mit Hilfe der Funktion: f$SQLFehler (f$SQLFehler)der Fehlerstatus und die Fehlerbeschreibung ermittelt werden. | |
Beispiel: | Kanal = f$SQLConnect( db, user, password ) Status = f$SQLDisconnect( Kanal ) | ||