Autor Beitrag
daywalker0086
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 243


Delphi 2005 Architect
BeitragVerfasst: Fr 12.12.08 21:17 
So ich hoffentlich zum letzten mal heute.
Hab folgenden Code:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
 for D:= 0 to ((arraygroeße div 2)-1) do
          begin
          Datenarray[D,1]:= wertefiltern(Daten,D,Datenarray[D,0]);  
          stringgrid1.Cells[1,D+1]:= Datenarray[D,1]  ;

            sqlAbfrage.SQL.Text:='UPDATE `Daten` Set `Wert`='''+Datenarray[D,1]+''','+
            'WHERE `id`='''+inttostr(D+1)+''';';
            sqlAbfrage.ExecSql;

          end;

Er durchläuft die Schleife einmal, trägt in die Stringgrid also einen Wert ein( es sind aber mehr) und dann hört er auf.
Die sqlAbfrage wird nicht ausgeführt und dann bleibt die Schleife hängen(obwohl sie mehrmal durchlaufen werden müsste)
Kommentiere ich die sqlabfrage aus dann läuft die Schleife problemlos durch.

Leider spuckt der Compiler und Debugger keine Fehlermeldung aus anhand ich das Problem identifizieren könnte.

Könnt ihr mir helfen oder habt ihr ne Idee?
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 12.12.08 21:23 
Das ist ein wenig unübersichtlich, da man die internen Funktionen nicht kennt. Ich würde auf jeden Fall den SQL-Befehl parametrisieren.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
sqlAbfrage.SQL.Text:='UPDATE `Daten` Set `Wert`=:wert1 WHERE `id`=:wert2';
for D:= 0 to ((arraygroeße div 2)-1) do
          begin
          Datenarray[D,1]:= wertefiltern(Daten,D,Datenarray[D,0]);  //die -1 weil Array bei 0 anfängt, sonst verschiebung
          stringgrid1.Cells[1,D+1]:= Datenarray[D,1]  ;
          sqlabfrage.ParamByName('wert1').AsString := Datenarray[D,1];
          sqlabfrage.ParamByName('wert2').AsInteger := D+1;
            
            sqlAbfrage.ExecSql;

          end;
daywalker0086 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 243


Delphi 2005 Architect
BeitragVerfasst: Fr 12.12.08 22:10 
Also ich hab die Werte Datenarray und D+1 mit showmessage nach der Stringgridfüllung abgefragt, die stimmen und die stringgrid wird eben einmal gefüllt.
Danach gehts nicht weiter und die sql Tabelle wird nicht gefüllt.
Es muss irgendwie an der Sql anweisung liegen.
Ich hab das sqlAbfrage.SQL.Text:='UPDATE `Daten` Set `Wert`=:wert1 WHERE `id`=:wert2';
mal in die For Schleife gesetzt sonnst wird das doch garnicht ausgeführt oder?

Da kommt dann aber für Wert1 und Wert2 beim Aufrufen das sie nicht gefunden wurden

Edit: habs jetzt so da kommt keine Fehlermeldung aber ein Wert wird trotzdem nicht eingetragen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
 
for D:= 0 to ((arraygroeße div 2)-1) do
          begin
          Datenarray[D,1]:= wertefiltern(Daten,D,Datenarray[D,0]);  //die -1 weil Array bei 0 anfängt, sonst verschiebung
          stringgrid1.Cells[1,D+1]:= Datenarray[D,1]  ;
         sqlAbfrage.SQL.Text:='UPDATE `Daten` Set `Wert`=:wert1 WHERE `id`=:wert2';

           sqlabfrage.ParamByName('wert1').AsString := Datenarray[D,1];
           sqlabfrage.ParamByName('wert2').AsInteger := D+1;
            sqlAbfrage.ExecSql;      

          end;

Wie gesagt wenn ich das sql zeugs auskommentiere läufts



EDIT: Es muss irgendwie an der For Schleife mit liegen.

Ich hab dieses Kommando in einer anderen Prozedur und das funktioniert:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
 
 if sql = true then
            begin
             sqlAbfrage.SQL.Text:='INSERT INTO `Daten` '+
      '(`id`, `Bezeichnung`)'+
      ' VALUES '+
      '('''', '''+Namefiltern(Daten)+''');';
      sqlAbfrage.ExecSql;  //SQL-Statement ausführen
            end;


Das funktioniert.

hm ich weis ned weiter
daywalker0086 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 243


Delphi 2005 Architect
BeitragVerfasst: Fr 12.12.08 22:52 
Ich könnt mich in *popo* beißen es funktioniert, hatte vergessen die Zugangsdaten und sowas einzugeben, die wurde irgendwie gelöscht.
Mann mann mann, ich such mich hier ne stunden lang tot :? :evil: