Function DE Version 5.00

@MySQLSeekResult

SQL

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;