Skip to main content
Skip table of contents

TBeCBAsyncQuery

TBeCBAsyncQuery

Ermöglicht das asynchronee Ausführen von SQL-Queries.

Eigenschaften

Query:O

Das AdsQuery-Objekt

SqlText:C

Das auszuführende SQL-Statement

AdminConnect:L

True = Query als Administrator starten

SqlOk:L

True = Wenn das Statement fehlerfrei ausgeführt wurde

False = Wenn während der Ausführung Fehler aufgetreten sind

LastError:C

Fehlertext des zuletzt ausgeführten Statements

Duration:D

Die Dauer der Ausführung

RowsAffected:N

Anzahl der betroffenen Datensätze

SqlOpen:LTrue = Der Query soll nur geöffnet werden
False = Der Query soll ausgeführt werden
ExecQuery:L

Wurde der Query angehalten, wird dieser wieder fortgesetzt und dementsprechend

True oder False zurückgegeben

Terminate:L

Der Query wird geschlossen, anschließend wird Terminated zurückgegeben

Terminated:LTrue = Der Query wurde geschlossen
False = Der Query wurde nicht geschlossen
Suspended:LDurch setzen dieser Eigenschaft auf True wird der Query angehalten


Aktive Eigenschaften (Events)

OnInitQuery

Bei Initialisierung des Queries

OnExitQuery

Bei Beenden des Queries

Beispiel

CODE
//******************************************************************************
// Programm zum Testen der TBeCbAsyncQuery-Klasse
//******************************************************************************


| oAsyncQuery, lFinished, cTime, cLastTime |


//##############################################################################
//##############################################################################
// Eventhandler
//##############################################################################
//##############################################################################

//******************************************************************************
// Wird bei aufruf des OnExit Events aufgerufen
//******************************************************************************
function OnExitQuery(Sender)                // Sender ist oAsyncQuery
| aQuery |
  StartSeq
    WriteLn('Dauer der Abfrage: ' +
            FormatDateTime('hh:nn:ss:zzz', Sender.Duration)),
    WriteLn('-------------------------------'),
    aQuery:= Sender.Query,
    DbGoTop(aQuery),
    while !EoF(aQuery) do
      WriteLn(Trim(aQuery:Bez1) + ' ' + Trim(aQuery:Bez2)),
      DbSkip(1, aQuery),
    end
  Always
    // Wichtig: das MUSS stattfinden !!!
    lFinished:= True
  StopSeq
end,


//##############################################################################
//##############################################################################
// Hauptprogramm
//##############################################################################
//##############################################################################

oAsyncQuery:= CreateObject('TBeCBAsyncQuery'),   // Objekt erzeugen
if not Empty(oAsyncQuery) then
   StartSeq
     // Sql-Text zuweisen
     oAsyncQuery.SqlText:= 'SELECT * FROM "DAB010.DBF" '   + // Alle Artikel mit 'TEST' selektieren
                           ' WHERE ARTNR LIKE ''%TEST%'' ' +
                           ' ORDER BY KOSTENST',
     // Abfrage mit Open öffnen
     oAsyncQuery.SqlOpen:= True,
     AssignEvent(oAsyncQuery, 'OnExitQuery', 'OnExitQuery'),

     // Abfrage ausführen
     lFinished:= False,
     oAsyncQuery.ExecQuery,

     // Warten ...
     cLastTime:= '',
     while not lFinished do
       // Hier kann alles mögliche gemacht werden, solange die Abfrage läuft ...
       cTime:= TimeToStr(Now()),
       if cTime <> cLastTime then
          writeln(cTime),
          cLastTime:= cTime,
       endif,
       ProcessMsg()
     end,

     Meld('Fertig: ' + iif(oAsyncQuery.SqlOk, 'Ok', oAsyncQuery.LastError))

   Always
     DestroyObject(oAsyncQuery)
   StopSeq
endif
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.