AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken !!! Datenbankübertragungsfortschritt - Progressbar wie? !!!
Thema durchsuchen
Ansicht
Themen-Optionen

!!! Datenbankübertragungsfortschritt - Progressbar wie? !!!

Ein Thema von MasterChief_88 · begonnen am 26. Nov 2009 · letzter Beitrag vom 26. Nov 2009
Antwort Antwort
MasterChief_88
(Gast)

n/a Beiträge
 
#1

!!! Datenbankübertragungsfortschritt - Progressbar wie? !!!

  Alt 26. Nov 2009, 09:16
Datenbank: FIREBIRD • Version: 1.5 • Zugriff über: ADO-Connection
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:
ProgressBar1.Position := ProgressBar1.Position +3;
      if i = 0 then
        ProgressBar1.Position := 0;
bestimmt und dann habe ich noch in anderen Foren Progressbars mit Downloadzeit gefunden. Bringt mir aber nicht wirklich was.

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 !

  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: !!! Datenbankübertragungsfortschritt - Progressbar wie?

  Alt 26. Nov 2009, 09:47
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:
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;
Bei der Anzahl der Tabellen genau so.



Heiko
Heiko
  Mit Zitat antworten Zitat
MasterChief_88
(Gast)

n/a Beiträge
 
#3

Re: !!! Datenbankübertragungsfortschritt - Progressbar wie?

  Alt 26. Nov 2009, 10:37
Also meine Datenbankübertragung sieht so aus:

Delphi-Quellcode:
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;
Also ich hab die ProgressBars jetzt nur so eingefügt, dass es nach was aussieht.

Aber deine Idee ist nicht schlecht, dank dir schon mal, ich guck mal, ob ich das mit meinem Quellcode realisieren kann .

Mfg
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: !!! Datenbankübertragungsfortschritt - Progressbar wie?

  Alt 26. Nov 2009, 11:37
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
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: !!! Datenbankübertragungsfortschritt - Progressbar wie?

  Alt 26. Nov 2009, 13:15
Du hast da doch eine schöne for-Schleife, lass da doch einfach eine Progressbar mitlaufen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: !!! Datenbankübertragungsfortschritt - Progressbar wie?

  Alt 26. Nov 2009, 13:46
Hallo,

die for-Schleife wäre für den Tabellen-Progressbar,
die while not Eof für den Fortschritt ja Tabelle.


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz