![]() |
Datenbank: FIREBIRD • Version: 1.5 • Zugriff über: ADO-Connection
!!! Datenbankübertragungsfortschritt - Progressbar wie? !!!
Hi!
Ich habe eine Übergabe von einer Access-Datenbank in eine FDB-Datenbank geschrieben und jetzt wollte ich noch den Fortschritt der Datenübertragung in 2 Progressbars darstellen, also einmal den Gesamtfortschritt und einmal den Fortschritt je Tabelle. Wie mache ich das? Also kenne nur das man die Progressbar mit z.B.
Delphi-Quellcode:
bestimmt und dann habe ich noch in anderen Foren Progressbars mit Downloadzeit gefunden. Bringt mir aber nicht wirklich was.
ProgressBar1.Position := ProgressBar1.Position +3;
if i = 0 then ProgressBar1.Position := 0; Also ich möchte die Zeit der Übertragung in einer Progressbar darstellen. Da braucht man bestimmt noch einen Timer, oder? Vielen dank schon mal für eure Hilfe ;)! :coder2: |
Re: !!! Datenbankübertragungsfortschritt - Progressbar wie?
Hallo,
wie funktioniert denn überhaupt deine "Übertragung". Ich denke mal "von Hand". Die hoslt dir mir Access zuerst mit Select Count(*) die Anzahl der Datensätze holen (rein in iTableCount) Dann in while not AccessQuery.Eof
Delphi-Quellcode:
Bei der Anzahl der Tabellen genau so.
PB_Table.Min:= 0;
PB_Table.Max:= iTableCount; iPos:= 0; while not AccessQuery.Eof do begin Inc(iPos); PB_Table.Position:= iPos; // ev. Application.ProcessMessages AccessQuery.Next; end; Heiko |
Re: !!! Datenbankübertragungsfortschritt - Progressbar wie?
Also meine Datenbankübertragung sieht so aus:
Delphi-Quellcode:
Also ich hab die ProgressBars jetzt nur so eingefügt, dass es nach was aussieht.
procedure TSDIAppForm.Button5Click(Sender: TObject);
var i,j,k : integer; var test,umlaute : string; begin if MyToolConnection.Connected = true then MyToolConnection.Connected := false; MyToolConnection.Connected := true; for j := 0 to Listbox2.items.Count - 1 do begin AccessTable.TableName := listbox2.Items.Strings[j]; //bekommt den Tabllenname zugeschrieben MyToolTable.TableName := AnsiUpperCase( listbox2.Items.Strings[j]); //alle Buchstaben werden groß geschrieben Datenfeld1 := TStringList.Create; //Stringliste wird erstellt AccessTable.GetFieldNames(Datenfeld1); //Fieldnamen werden der Stringliste zugeschrieben //ersetzen von Umlauten MyToolTable.TableName := AnsiStrings.StringReplace(MyToolTable.TableName,'Ä','AE', [rfIgnoreCase]); MyToolTable.TableName := AnsiStrings.StringReplace(MyToolTable.TableName,'Ö','OE', [rfIgnoreCase]); MyToolTable.TableName := AnsiStrings.StringReplace(MyToolTable.TableName,'Ü','UE', [rfIgnoreCase]); MyToolTable.Active := true; AccessTable.Open; MyToolTable.first; while not MyToolTable.Eof do MyToolTable.Delete; //Löschen der Tabelleninhalte ProgressBar2.Position := ProgressBar2.Position +5; //<------------------Progressbar2 while not AccessTable.Eof do begin MyToolTable.Append; //Beschreibungsbefehl for i := 0 to AccessTable.FieldCount - 1 do begin ProgressBar1.Position := ProgressBar1.Position +3; //<------------------Progressbar1 if i = 0 then ProgressBar1.Position := 0; if AccessTable.Fields[i].IsNull then begin AccessTable.Next; //wennnichts drin steht, weiter machen Continue; end; //Tabellenihalte werden dem String Umlaute zugeschrieben und ersetzen der Umlaute Umlaute := AccessTable.Fields[i].FieldName; Umlaute := ansistrings.StringReplace(Umlaute,'ä','ae', [rfIgnoreCase]); Umlaute := ansistrings.StringReplace(Umlaute,'ö','oe', [rfIgnoreCase]); Umlaute := ansistrings.StringReplace(Umlaute,'ü','ue', [rfIgnoreCase]); if MyToolTable.FindField(Umlaute) <> nil then begin MyToolTable.FieldByName(Umlaute).AsVariant := AccessTable.Fields[i].AsVariant; end; end; MyToolTable.Post; //Beschreiben abschließen AccessTable.Next; //nächste Tabelle end; MyToolTable.Close; AccessTable.Close; end; showmessage('Alle Daten übertragen'); ListBox2.Clear; end; Aber deine Idee ist nicht schlecht, dank dir schon mal, ich guck mal, ob ich das mit meinem Quellcode realisieren kann ;). Mfg |
Re: !!! Datenbankübertragungsfortschritt - Progressbar wie?
Hallo,
sollte klappen. Aber dein Code ist suboptimal ... Du verwendest TTable zum Zugriff auf Firebird. Eine Query wäre besser. Ausserdem: MyToolTable.Delete -> Delete From XXX Ausserdem2: AccessTable, MyToolTable, Datenfeld1 Warum ist das nicht lokal definiert ? Heiko |
Re: !!! Datenbankübertragungsfortschritt - Progressbar wie?
Du hast da doch eine schöne for-Schleife, lass da doch einfach eine Progressbar mitlaufen.
|
Re: !!! Datenbankübertragungsfortschritt - Progressbar wie?
Hallo,
die for-Schleife wäre für den Tabellen-Progressbar, die while not Eof für den Fortschritt ja Tabelle. Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz