2010-11-21 12 views
3

habe ich den folgenden Code in delphi für Griff:Wie wird der Fortschritt der Abfrageausführung während des Handle angezeigt?

procedure TForm1.ADOQuery1FetchProgress(DataSet: TCustomADODataSet; Progress, 

    MaxProgress: Integer; var EventStatus: TEventStatus); 

begin 

    Progressbar1.Visible:=true; 

    Progressbar1.Max:=MaxProgress; 

    Progressbar1.Ppsitian:=Progress; 

    Progressbar1.Visible:=false; 

end; 

aber .... ich keine Wirkung

Ich möchte von zeigen (dieser Code nicht ausgeführt werden) sehen Fortschritte Abfrageausführung, während der Benutzer auf eine Schaltfläche für SEARCH in der Datenbank vom Anfang bis zum Ende des Filters in der Fortschrittsleiste geklickt hat.

die Schaltfläche Onclick Codes:

with ADOQuery1 do 

begin 

SQL.Clear; 

SQL.Add('select * from tbl1 where id = '+Edit1.Text); 

Open; 

end; 

aber ich habe keine Mutation in dem Fortschrittsbalken, als ob keinen Code in OnFetchProgress Ereignisse schreiben.

Habe ich dich vertreten?

+0

Bitte weitere Informationen hinzufügen. Wir können davon nicht helfen. Meinst du, deine Prozedur wird nicht angerufen? In diesem Fall hat das nichts mit dem Verfahren selbst zu tun, sondern mit dem Code, der dafür sorgt, dass es aufgerufen wird, aber Sie haben uns nichts davon gezeigt. –

+0

Ich habe meine Frage bearbeitet .... – NiliDelphi

+2

Sie erhalten Ihre Datensätze [asynchron] (http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devwin32/adofetchingrecordsasynchronously_xml.html)? –

Antwort

5

müssen Sie Eigenschaft ExecuteOptions-eoAsyncFetch setzen, bevor das offene Verfahren

Prüfung nennen diese Probe

with ADOQuery1 do 
begin 
SQL.Clear; 
SQL.Add('select * from tbl1 where id = '+Edit1.Text); 
ExecuteOptions:=[eoAsyncFetch]; 
Open; 
end; 


procedure TForm1.ADOQuery1FetchProgress(DataSet: TCustomADODataSet; Progress, 
    MaxProgress: Integer; var EventStatus: TEventStatus); 
begin 
    ProgressBar1.Max  :=MaxProgress; 
    ProgressBar1.Position :=Progress; 
    Application.ProcessMessages; 
end; 
+0

Tank Sie für diese Answare – NiliDelphi