LiesSql

Führt das übergebene SQL-Statement aus und übergibt die Feldinhalte an die entsprechenden Merkmale.

Prototype


int LiesSql(Select;Felder...)

Parameter


ParameterBeschreibung

Select

SQL-Select (Zeichenkette mit Hochkommas oder Merkmal, das den Select enthält).

Felder

variable Anzahl Ziel-Merkmale (Merkmalsnamen mit Hochkommas oder Merkmale ohne Hochkommas, die die Bezeichner des Zielmerkmals enthalten). Auch leere Parameter sind zulässig (einfach kein Merkmal und keine Zeichenkette angeben, nur ein Semikolon).

Rückgabewert


Datenbank-Status (FetchStatus vom Lesen des Datensatzes). 0 ist OK, alles andere deutet auf einen Fehler hin.

Hinweise


  • Der Mandant (Feld "finr") muss hier berücksichtigt werden (im Gegensatz zur Funktion LiesTab), er wird nicht automatisch auf den aktuellen Mandanten eingeschränkt!
  • Im Gegensatz zu LiesTab müssen die Zielmerkmale mit Hochkommas angegeben werden, es können aber auch Merkmale ohne Hochkommas übergeben werden, die dann die Bezeichner der Zielmerkmale enthalten!
  • Im Select-Statement können beliebig komplexe Abfragen verwendet werden, z.B. mit mehreren verknüpften Tabellen, Subselects, Aggregat-Funktionen etc.
  • Es werden alle Datentypen unterstützt (also z.B. auch Text- oder Datums-Felder). Nur Byte-Felder werden ignoriert; hier wird dann Blank (" ") zurückgeliefert.
  • Wenn das Select-Statement mehrere Datensätze liefern würde, wird nur der erste Datensatz zurückgegeben.
  • Wenn kein Datensatz gefunden wird, werden die übergebenen Ziel-Merkmale auf Blank (" ") gesetzt.

Beispiel


Es sollen Vorname und Nachname der Person, deren Kürzel im Merkmal "persnr" enthalten ist, ermittelt werden und in die Merkmale "vn" und "nn" geschrieben werden. Die Tabelle, die die benötigten Informationen enthält, ist die gpktab.

Zunächst wird das Select-Statement zusammengebaut und in ein (Hilfs-)Merkmal reingeschrieben (im Beispiel 'sql'):

"SELECT vname, nname FROM gpktab WHERE finr = "+FINR+" AND perseh = '"+persnr+"';"

Im Anschluss kann das Ausführen des Selects mit folgendem Befehl erfolgen:

LiesSql(sql;"vn";"nn")

Die Zielmerkmale können auch indirekt angegeben werden: Hierzu müssen die Zielmerkmale zunächst in (Hilfs-)merkmale reingschrieben werden, z.B. ziel1 = "vn", ziel2 = "nn". Der Aufruf muss dann wie folgt aussehen:

LiesSql(sql;ziel1;ziel2)

Auch hier werden (wie im ersten Beispiel) die Merkmale "vn" und "nn" mit Vorname und Nachname befüllt (und nicht etwa die Merkmale "ziel1" und "ziel2").

Will man sichergehen, dass das Lesen des Datensatzes erfolgreich war, so muss man den Rückgabewert der Funktion prüfen (0 = OK, ungleich 0 = Fehler).