Entwickler-Ecke

Datenbanken - ADOQuery??


kabizolis - Fr 02.12.05 10:10
Titel: ADOQuery??
Ich weiss, ich sollte es wissen! unklar ist mir jedoch wieso es mir eine fehlermeldung gibt...

wie spricht man korrekt eine ADOQuery an, wenn man...
1) ...Updaten will?
2) ...Insertbefehl senden will?

meine sehen so aus:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
       ADOQuery2.SQL.Clear;
       ADOQuery2.SQL.Add('INSERT INTO CDs');
       ADOQuery2.SQL.Add('VALUES (');
       ADOQuery2.SQL.Add('"' + Edit1.Text      + '",');
       ADOQuery2.SQL.Add('"' + ComboBox1.Text  + '",');
       ADOQuery2.SQL.Add('"' + Edit4.Text      + '",');
       ADOQuery2.SQL.Add('"' + ComboBox3.Text  + '",');
       ADOQuery2.SQL.Add('"' + ComboBox2.Text  + '",');
       ADOQuery2.SQL.Add('"' + ComboBox6.Text  + '",');
       ADOQuery2.SQL.Add('0, ');
       ADOQuery2.SQL.Add('"' + ComboBox7.Text  + '",');
       ADOQuery2.SQL.Add('"' + ComboBox8.Text  + '")');
       ADOQuery2.ExecSQL;



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
       ADOQuery2.SQL.Clear;
       ADOQuery2.SQL.Add('UPDATE CDs');
       ADOQuery2.SQL.Add('SET Monat = "' + ComboBox2.Text  + '",');
       ADOQuery2.SQL.Add('Jahr = "' + ComboBox3.Text  + '",');
       ADOQuery2.SQL.Add('Sprache = "' + ComboBox1.Text  + '",');
       ADOQuery2.SQL.Add('Ordner = "' + ComboBox6.Text  + '",');
       ADOQuery2.SQL.Add('Beschreibung = "' + Edit4.Text      + '"');
       ADOQuery2.SQL.Add('WHERE Strichcode = "' + Edit1.Text      + '"');
       ADOQuery2.ExecSQL;


jasocul - Fr 02.12.05 10:14

Die Fehlermeldung könnte hilfreich sein. *Glaskugel reiben*... Kann es sein, dass du auch numerische Felder füllen willst? Dann darfst du bei den Feldern keine zusätzlichen Anführungszeichen verwenden.


kabizolis - Fr 02.12.05 10:22


Quelltext
1:
IM Projekt Projekt1.exe ist eine Exception der Klasse EDatabaseError aufgetreten. Meldung ‚ADOQuery2: Operation bei geschlossener Datenmenge nicht ausführbar’. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.                    


jasocul - Fr 02.12.05 10:42

Ich kann mir nicht vorstellen, dass der Fehler durch eine der oben beschriebenen ExecSQLs ausgelöst wird.
Du kannst noch folgendes ausprobieren:
Mache vor dem ADOQuery2.SQL.Clear; noch ein ADOQuery2.Close;
Das dürfte zwar theoretisch nicht erforderlich sein, aber man weiß ja nie.
Vielleicht solltest du deinen Source schrittweise (F7 und F8 ) durchlaufen, um die exakte Fehlerstelle zu lokalisieren.


kabizolis - Fr 02.12.05 10:58

ups, der fehler lag an einer anderen stelle, bei einer abfrage, die jedes mal, vor einer insert- updateabfrage im hintergrund geschieht... aber danke für die tips!