Entwickler-Ecke

Datenbanken - ProgressBar


Stefan_B - Do 09.01.03 11:15
Titel: ProgressBar
hallo!
wie kann ich einen programmablauf (z.b. datensätze hinzufügen) in der ProgressBar anzeigen lassen?
danke


bis11 - Do 09.01.03 11:29

Hi,

was willst Du da genau machen, denn damit kann man wenig anfangen mit Deiner Frage. Definiere doch mal was genau.


LCS - Do 09.01.03 11:30

Borland OnlineHilfe hat folgendes geschrieben:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
// Alle Datensätze in der Tabelle durchgehen

// und ProgressBar entsprechend nachführen.

procedure TForm1.Button1Click(Sender: TObject);

var
  i: Integer;
begin
  with ProgressBar1 do
  begin
    Min := 0;
    Max := SQLDataSet1.RecordCount;
    SQLDataSet1.First;
    for i := Min to Max do
    begin
      Position := i;
      SQLDataSet1.Next;
    end;
      // Operationen mit Datensatz durchführen...
    end;
  end;
end;


Kurz gesagt: Eigenschaften Min und Max setzen und dann Fortschritt entweder mit Position festlegen oder mit StepIt/StepBy erhöhen.

Gruss Lothar


Stefan_B - Do 09.01.03 12:05

aber wie kann ich den progressBar in den code hier einbauen?

Quelltext
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:
procedure TForm1.Button1Click(Sender: TObject);

begin
  wwQuery1.First;

  while not wwQuery2.Eof do
        begin
             wwQuery2.Delete;
        end;
            while not wwQuery1.Eof do
            begin
                 if (wwQuery1.FieldByName('KNUMMER').IsNull)
                 or (wwQuery2.Locate('KdNr',wwQuery1.FieldByName('KNUMMER').AsString,[]))
                 then Memo1.Lines.add( wwQuery1.FieldByName('KNUMMER').AsString + ' ' 
                 +  wwQuery1.FieldByName('KNAME1').AsString)


                 else
                 begin
                     wwQuery2.Insert;
                     wwQuery2.FieldByName('KdNr').AsString:= wwQuery1.FieldByName('KNUMMER').AsString;
                     wwQuery2.FieldByName('Name1').AsString:=wwQuery1.FieldByName('KNAME1').AsString;
                     wwQuery2.FieldByName('Name2').AsString:=wwQuery1.FieldByName('KNAME2').AsString;
                     wwQuery2.FieldByName('Strasse').AsString:=wwQuery1.FieldByName('KSTRASSE').AsString;
                     wwQuery2.FieldByName('PLZ').AsString:=wwQuery1.FieldByName('KPLZ').AsString;
                     wwQuery2.FieldByName('Postfach').AsString:=wwQuery1.FieldByName('KPOSTFACH').AsString;
                     wwQuery2.FieldByName('PLZPostfach').AsString:=wwQuery1.FieldByName('KPOSTFPLZ').AsString;
                     wwQuery2.FieldByName('Ort').AsString:=wwQuery1.FieldByName('KORT').AsString;
                     wwQuery2.FieldByName('Telefon').AsString:=wwQuery1.FieldByName('KTELEFON').AsString;
                     wwQuery2.FieldByName('Telefax').AsString:=wwQuery1.FieldByName('KTELEFAX').AsString;
                     wwQuery2.FieldByName('KonPers').AsString:=wwQuery1.FieldByName('KPNAME1').AsString;
                     wwQuery2.FieldByName('Bank').AsString:=wwQuery1.FieldByName('KBANK').AsString;
                     wwQuery2.FieldByName('KontoNr').AsInteger:=wwQuery1.FieldByName('KKTONR').AsInteger;
                     wwQuery2.FieldByName('BLZ').AsString:=wwQuery1.FieldByName('KBLZ').AsString;
                     wwQuery2.FieldByName('E_Mail').AsString:=wwQuery1.FieldByName('KEMAIL').AsString;
                     wwQuery2.Post;
                 end;
                 wwQuery1.Next;
            end;
end;
end;
end;
end.

wenn ich den vor die schleife setze, läuft er immer wieder die 1 datenbank durch.

-------------------------------------
:(
-------------------------------------


Stefan_B - Do 09.01.03 12:07

muss ich step nicht auf 1 setzen?


LCS - Do 09.01.03 12:13

In etwa so:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
  ...
  with bar1 do begin
    min := 0;
    max:= wwQuery1.RecordCount; //Bei SQL-Datenbanken mit vorsicht zu geniessen
    position := 0;
    step := 1;
  end;
  while not wwQuery1.Eof do 
  begin
     ... 
     wwQuery1.Next; 
     bar1.StepIt;
     Application.ProcessMessages;
  end; 
  ...


Gruss Lothar


Stefan_B - Do 09.01.03 12:24

danke lothar!
du bist der beste! 8)