Entwickler-Ecke
Datenbanken - noch einmal MYSQL warum führt er es nicht aus?
daywalker0086 - Fr 12.12.08 21:17
Titel: noch einmal MYSQL warum führt er es nicht aus?
So ich hoffentlich zum letzten mal heute.
Hab folgenden Code:
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?
Delete - 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.
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]); 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 - 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:
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]); 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:
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; end; |
Das funktioniert.
hm ich weis ned weiter
daywalker0086 - 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:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!