Programmer un Progress bar avec la procédure de recherche
Bonjour à tous,
Voilà, j'ai implémenté une procédure de recherche qui a pour but de parcourir 2 tables et d'y retrouver les enregistrements communs aux deux tables, ceux retrouvés sont ensuite insérés au niveau d'une 3ème table...!
Jusque là, tout va bien, j'ai ensuite placé sur ma fiche un ProgressBAr qui devrait donner un aperçu sur l'avancement de la recherche!!
Je l'ai implémenté comme suit au niveau de l'événement OnClick:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
| procedure TFAbsence.SearchButtonClick(Sender: TObject);
Var
trouv:boolean;
i,j,k:integer;
begin
DataModule3.personnel.First;
DataModule5.TableEvent.First;
trouv:=false;
i:=0;
j:=0;
k:=1;
editAbs.Text:='0';
editAbs.Update;
editPrs.Text:='0';
editPrs.Update;
searchProgBar.Min:=0;
searchProgBar.max:=datamodule3.personnel.RecordCount;
While not DataModule3.personnel.Eof do
begin
while not DataModule5.TableEvent.Eof do
begin
if (DataModule3.personnel.FieldValues['PUCE']=DataModule5.TableEvent.FieldValues['PUCE']) and (trouv=false) then
begin
DataModule5.TabTempPrs.Append;
DataModule5.TabTempPrs.FieldValues['NUM']:=k;
DataModule5.TabTempPrs.FieldValues['MATRICULE']:=DataModule3.personnel.FieldValues['MATRICULE'];
DataModule5.TabTempPrs.FieldValues['PUCE']:=DataModule3.personnel.FieldValues['PUCE'];
DataModule5.TabTempPrs.FieldValues['NOM']:=DataModule3.personnel.FieldValues['NOM'];
DataModule5.TabTempPrs.FieldValues['PRENOM']:=DataModule3.personnel.FieldValues['PRENOM'];
DataModule5.TabTempPrs.FieldValues['FONCTION']:=DataModule3.personnel.FieldValues['FONCTION'];
DataModule5.TabTempPrs.FieldValues['DEPT']:=DataModule3.personnel.FieldValues['DEPT'];
DataModule5.TabTempPrs.FieldValues['EVENT']:=DataModule5.TableEvent.FieldValues['EVENT'];
DataModule5.TabTempPrs.FieldValues['DATES']:=DataModule5.TableEvent.FieldValues['DATE'];
DataModule5.TabTempPrs.FieldValues['HEURE']:=DataModule5.TableEvent.FieldValues['HEURE'];
DataModule5.TabTempPrs.post;
i:=i+1;
k:=k+1;
editPrs.Text:=inttostr(i);
editPrs.Update;
DataModule5.TabTempPrs.Next;
trouv:=true;
end; //end if
DataModule5.TableEvent.Next;
end;
if (trouv=false) then
begin
DataModule5.TabTempAbs.Append;
DataModule5.TabTempAbs.FieldValues['MATRICULE']:=DataModule3.personnel.FieldValues['MATRICULE'];
DataModule5.TabTempAbs.FieldValues['PUCE']:=DataModule3.personnel.FieldValues['PUCE'];
DataModule5.TabTempAbs.FieldValues['NOM']:=DataModule3.personnel.FieldValues['NOM'];
DataModule5.TabTempAbs.FieldValues['PRENOM']:=DataModule3.personnel.FieldValues['PRENOM'];
DataModule5.TabTempAbs.FieldValues['FONCTION']:=DataModule3.personnel.FieldValues['FONCTION'];
DataModule5.TabTempAbs.FieldValues['DEPT']:=DataModule3.personnel.FieldValues['DEPT'];
DataModule5.TabTempAbs.FieldValues['DATES']:=DataModule5.TableEvent.FieldValues['DATE'];
DataModule5.TabTempAbs.Post;
j:=j+1;
editAbs.Text:=inttostr(j);
editAbs.update;
DataModule5.TabTempAbs.Next;
DataModule5.TableEvent.First;
DataModule3.personnel.Next;
end; //end if
if (trouv=true) then
begin
DataModule5.TableEvent.First;
DataModule3.personnel.Next;
trouv:=false;
end;
with suiprogressbar4 do
begin
Min:=0;
Max:=datamodule16.DONNEBACS.recordcount;
datamodule16.DONNEBACS.first;
for i:= Min to Max do
begin
position:=i;
datamodule16.DONNEBACS.Next;
edit2.text:=inttostr(Max);
end; end; //end While
end; |
le problème est que le progressbar passe directement de : 0% à 100% à la fin du traitement de recherche sans faire de progression...
Merci de m'eclairer sur ce point!:D
Merci Merci Merci