Einzelnen Beitrag anzeigen

brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#1

query.open blockiert

  Alt 7. Nov 2013, 09:34
Datenbank: MSSQL • Version: alle • Zugriff über: Zeos/Ado/AnyDac
Hallo,
ich habe verschiedene Komponenten ausprobiert, bei ZEOS/ADO blockiert ein Query.Open bis die kompletten Daten uebermittelt wurden, bei AnyDAC nicht.

Delphi-Quellcode:
  qry.sql.text := 'SELECT * FROM GROSSE_TABELLE';
  qry.open; // <-- erst fertig wenn die Daten uebermittelt wurden bei ZEOS/ADO, schnell bei AnyDAC
  while not qry.eof do begin
    // zeitintensive Berechnung
    qry.next; <-- vermutlich: schnell bei ZEOS/ADO, blockierend bei AnyDAC
  end;
Kann man das Verhalten von AnyDAC irgendwie bei ZEOS/ADO einstellen? Ich moechte die Daten schon verarbeiten, auch wenn diese noch nicht komplett uebertragen wurden (qry.next sollte dann blockieren). Da Uebertragung und Berechnung gleich lange dauern, wuerde es somit quasi parallel ausgefuehrt. Da im Moment das Open bei ZEOS/ADO blockiert dauert alles doppelt so lange...

Ich moechte ungern alles auf Events umstellen (ExecuteOption auf adAsyncExecute) da ich dann selbst den Main/Read-Thread synchonisieren muss.

Edit:
AnyDAC bzw. FireDAC ist mir zu teuer (D2007 Prof Upgrade bei mehreren Nutzern) und diese werden auch nicht mehr supported fuer Delphi2007.
Waere auch mit guenstigen Alternativen zu frieden.

Geändert von brechi ( 7. Nov 2013 um 09:37 Uhr) Grund: Begründung AnyDAC hinzugefuegt
  Mit Zitat antworten Zitat