@MySQLSeekResult
Syntax
@MySQLSeekResult(MySQLResultHandle;Position);
Beschreibung
Setzt die aktuelle Position (resp. Zeile/Row) in einem gespeicherten Ergebnis einer @MySQLQuery Anfrage.
ACHTUNG:Die Zählung beginnt mit 0!
Return:
Im Erfolgsfall TRUE sonst @Error;
Beispiel: @MySQLSeekResult(MySQLResultHandle;Position);
/* Beispiel: Einfache MySQL-Abfrage aus der Engine.
Das Skript stellt eine Verbindung zu einer MySQL-Datenbank her,
liest alle Datensätze aus der Tabelle testdb.amount,
übernimmt die Ergebniswerte in Variablen und gibt diese im Log aus. */
/* MySQL-Handle initialisieren. */
MySQLh:=@MySQLInit;
/* Fehlerstatus vorbelegen: 1 bedeutet Fehler bzw. noch keine erfolgreiche Verbindung. */
MySQLError:=1;
/* Prüfen, ob das MySQL-Handle erfolgreich initialisiert wurde. */
IF(@IsError(MySQLh)){
@LogReport(MySQLh;3);
}ELSE{
/* MySQL-Optionen setzen bzw. initialisieren. */
@MySQLOptions(MySQLh);
/* Verbindungsdaten für den MySQL-Server festlegen. */
MySQLUser:="MySQLConnector";
MySQLPassword:="ConnectorPassword";
MySQLDefaultDatabase:="testdb";
MySQLHost:="172.16.1.215";
/* Verbindung zur MySQL-Datenbank herstellen. */
Ret:=@MySQLConnect(MySQLh;MySQLHost;MySQLUser;MySQLPassword;MySQLDefaultDatabase);
/* Wenn die Verbindung fehlschlägt, Fehler protokollieren. */
IF(@IsError(Ret)){
@LogReport(Ret);
}ELSE{
/* Die Verbindung war erfolgreich; Fehlerstatus zurücksetzen. */
MySQLError:=0;}
/* Die Abfrage nur ausführen, wenn die Verbindung erfolgreich hergestellt wurde. */
IF(!MySQLError){
/* Alle Datensätze aus testdb.amount auswählen. */
QueryStr:="SELECT ID,Name,Amount,UID FROM testdb.amount;";
/* Query ausführen und das Ergebnis-Handle in MySQLResH zurückgeben. */
Ret:=@MySQLQuery(MySQLh;QueryStr;MySQLResH);
IF(@IsError(Ret)){
@LogReport(Ret;3);}
/* Anzahl der von der Abfrage zurückgegebenen Zeilen ermitteln. */
NumRows:=@MySQLGetNumRows(MySQLResH);
@LogReport("NumRows:"+@Text(NumRows);3);
/* Über alle Zeilen des Ergebnisses iterieren. */
Rows_Index:=1;
WHILE(Rows_Index<=NumRows){
/* Aktuelle Zeile lesen und die Spaltenwerte in Variablen übernehmen. */
Ret:=@MySQLFetchRow(MySQLResH;1;ThisQueryID;ThisQueryName;ThisQueryAmount;ThisQueryUID);
IF(@IsError(Ret)){
@LogReport(Ret;3);
Rows_Index:=NumRows;
}
ELSE{
/* Die gelesenen Ergebniswerte ausgeben. */
@LogReport("ThisQueryID :"+@Text(ThisQueryID);3);
@LogReport("ThisQueryName :"+ThisQueryName;3);
@LogReport("ThisQueryAmount:"+@Text(ThisQueryAmount);3);
@LogReport("ThisQueryUID :"+ThisQueryUID;3);
}
/* Rows_Index erhöhen. */
@Increment(Rows_Index);
}
@LogReport("Setting the position to row #2 in result";3);
/* Position auf Zeile #2 setzen. */
@MySQLSeekResult(MySQLResH;1);
/* Zeile #2 erneut lesen. */
Ret:=@MySQLFetchRow(MySQLResH;1;ThisQueryID;ThisQueryName;ThisQueryAmount;ThisQueryUID);
IF(@IsError(Ret)){
@LogReport(Ret;3);
Rows_Index:=NumRows;
}
ELSE{
/* Die gelesenen Ergebniswerte ausgeben. */
@LogReport("ThisQueryID :"+@Text(ThisQueryID);3);
@LogReport("ThisQueryName :"+ThisQueryName;3);
@LogReport("ThisQueryAmount:"+@Text(ThisQueryAmount);3);
@LogReport("ThisQueryUID :"+ThisQueryUID;3);
}
/* Ergebnis-Handle freigeben. */
MySQLResH:=@MySQLFreeResult(MySQLResH);
}
/* MySQL-Verbindung schließen. */
MySQLh:=@MySQLClose(MySQLh);
}
/* MySQL-Thread-Kontext beenden bzw. aufräumen. */
@MySQLThreadEnd;
