Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL-Sanduhr bei Datenübermittlung bleibt bestehen (https://www.delphipraxis.net/43713-sql-sanduhr-bei-datenuebermittlung-bleibt-bestehen.html)

Moin 7. Apr 2005 16:12

Datenbank: MySQL (PHPmyAdmin) • Version: ?? • Zugriff über: TTable

SQL-Sanduhr bei Datenübermittlung bleibt bestehen
 
Hallo zusammen,
Ich muss für die Schule ein Programm schreiben, das die Schülerdaten (name, gwählte Kurse, Klasse) in eine PHPMyAdmin-Sql-DB über nimmt.

Mein Problem:
Der Quelltext funktioniert nicht richtig, die Daten werden zwar (meines Wissens) vollständig übertragen, ABER die SQL-Sanduhr welche bei der Datenübertragung angezeigt wird, verschwindet nicht (ca. 90 Datensätze werden eingefügt). Sonst tritt kein Fehler auf!


Daten werden Zeilenweise über eine Memo im Format:
Nr.;Name;Vorname;Klasse;LK 1;LK 2;GK 1;GK 2;GK 3;GK 4;GK 5;GK 6;GK 7;GK 8;GK 9
eingelesen.

Bsp.:
Code:
snr;Name;Vorname;Kl;LK 1;LK 2;GK 1;GK 2;GK 3;GK 4;GK 5;GK 6;GK 7;GK 8;GK 9
1;Mustermann;Martin;klA02;DEU;TE;EN;BK;WL/;GE;MA;PHY;INF;SP;
2;Musterfrau;Max;klB02;MAT;IS;DE;EN;RU;BK;WL/;GE;CH;IV;EP
Hier Mein Quelltext:
Delphi-Quellcode:
procedure TfMain.btnImportSClick(Sender: TObject);
    var i,k,z : integer;
    var ds,temp : string;
begin
     If memoS.Text <> ''
     Then Begin

          if cbS1.Checked  // 1. Zeile überspringen??
          then i := 1
          else i := 0;

         While i <= memoS.Lines.Count Do  //für jede Zeile
          If (memoS.Lines[i]<> '') AND (memoS.Lines[i] <> ' ') //Wenn Zeile nicht Leer
          Then
            BEGIN

            tabS.Append;
            z := 0;
            ds := memoS.Lines[i]; // Datensatz = Zeile
            If ds[length(ds)] <> ';' //Wenn Zeile nicht mit ";" abgeschlossen, ";" anhängen
            Then ds := ds +';' ;

            temp := '';
            For k := 0 to length(ds) Do
             Begin
             If ds[k] = ';'
             Then begin
                  Case z of
                  1  : If Temp <> ''       //Beginnt mit 1, da SNR ignoriert wird
                       Then tabS.FieldValues ['name'] := temp;
                  2  : If Temp <> ''
                       Then tabS.FieldValues ['vorname'] := temp;
                  3  : If Temp <> ''
                       Then tabS.FieldValues ['klasse'] := temp;
                  4  : If Temp <> ''
                       Then tabS.FieldValues ['lk1'] := temp;
                  5  : If Temp <> ''
                       Then tabS.FieldValues ['lk2'] := temp;
                  6  : If Temp <> ''
                       Then tabS.FieldValues ['gk1'] := temp;
                  7  : If Temp <> ''
                       Then tabS.FieldValues ['gk2'] := temp;
                  8  : If Temp <> ''
                       Then tabS.FieldValues ['gk3'] := temp;
                  9  : If Temp <> ''
                       Then tabS.FieldValues ['gk4'] := temp;
                  10 : If Temp <> ''
                       Then tabS.FieldValues ['gk5'] := temp;
                  11 : If Temp <> ''
                       Then tabS.FieldValues ['gk6'] := temp;
                  12 : If Temp <> ''
                       Then tabS.FieldValues ['gk7'] := temp;
                  13 : If Temp <> ''
                       Then tabS.FieldValues ['gk8'] := temp;
                  14 : If Temp <> ''
                       Then tabS.FieldValues ['gk9'] := temp;
                  end;
                  temp:= '';
                  inc(z);
                  end
             Else if ds[k]<> '"'
                  then temp := temp + ds[k];
             End;
         //Passwort erstellen
            tabS.FieldValues ['passwort'] := 'katze'; //Platzhalter
         // Ende Passworerstellung
            tabS.Post;
            inc(i);
            END;
          End;
end;
Kann mir jemand Helfen??

danke im Vorraus

RavenIV 7. Apr 2005 16:58

Re: SQL-Sanduhr bei Datenübermittlung bleibt bestehen
 
hallo

ein fehler ist mir sofort aufgefallen, weil der mir auch oft passiert:
Delphi-Quellcode:
While i <= memoS.Lines.Count Do
muss heissen:
Delphi-Quellcode:
While i < memoS.Lines.Count -1 Do
probier das mal aus und gib wieder bescheid.

gruessle

Moin 7. Apr 2005 17:57

Re: SQL-Sanduhr bei Datenübermittlung bleibt bestehen
 
habe zuhause keine MySQL-Treiber für ODBC,

ich muss den erst downloaden

danke für deine Antwort (vorerst)

Aber wenn man
Delphi-Quellcode:
i [b]<[/b] Memo.lines [u]-1[/u]
,dann ist man ja beim Vorletzten, oder?

Airblader 7. Apr 2005 18:25

Re: SQL-Sanduhr bei Datenübermittlung bleibt bestehen
 
[OT]
Zitat:

in eine PHPMyAdmin-Sql-DB über nimmt.
Es gibt keine PHPMyAdmin-SQL-DB :)
PHPMyAdmin ist nur eine Oberfläche zur Administration
[/OT]

RavenIV 8. Apr 2005 07:07

Re: SQL-Sanduhr bei Datenübermittlung bleibt bestehen
 
Zitat:

Zitat von Moin
Aber wenn man
Delphi-Quellcode:
i [b]<[/b] Memo.lines [u]-1[/u]
,dann ist man ja beim Vorletzten, oder?

das stimmt schon, aber man fängt auch beim null-ten element an.
also: 0 bis (10 -1) sind 10 durchläufe.

gruessle

Albi 8. Apr 2005 07:32

Re: SQL-Sanduhr bei Datenübermittlung bleibt bestehen
 
Hallo,

etwas OT - aber Count funktioniert so, das eine Datenmenge so lange durchlaufen wird bis sie alle ist und das wird daran erkannt, dass eben kein Datenmenge mehr da ist.

Daher ist der Wert Count immer um eines Größer als die eigentliche Datenmenge.

Zitat:

Zitat von RavenIV
das stimmt schon, aber man fängt auch beim null-ten element an.
also: 0 bis (10 -1) sind 10 durchläufe.

Sorry aber das ist Quatsch, wenn es heißt for i:= 1 o. 5 do Daten.Count-1 must du auch Count -1 nehmen.

Moin 14. Apr 2005 19:57

Re: SQL-Sanduhr bei Datenübermittlung bleibt bestehen
 
Danke für eure Hilfe!

Es Geht jetzt endlich!


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:16 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