Entwickler-Ecke
Datenbanken - Datensätze löschen
Hänsel - So 26.07.15 16:15
Titel: Datensätze löschen
Hallo, wer kann helfen?
ich möchte aus einer Tabelle alle Datensätze welche die Kennzeichnung 'A' haben und eine bestimmte Nummer (LA)aufweisen löschen
Delphi-Quelltext
1: 2: 3: 4: 5:
| LA:=intToStr(Datamodule3.ADOQuery2['OBJ']) ; FL:='A'; Datamodule3.ADOQuery_Mieter.Close; DataModule3.ADOQuery_Mieter.SQL.Text:='Delete From MDV1 Where (obj='+LA+') and (KO_16='''+FL+''')'; DataModule3.ADOQuery_Mieter.Open; |
dabei bekomme ich eine Fehlermeldung: Tabelle ADOQuery_Mieter .... CommoandText gibt keine Ergebnismenge zurück
Was habe ich da falsch gemacht?
Danke in Voraus
Hänsel
Moderiert von Narses: Delphi-Tags hinzugefügt
Delete - So 26.07.15 17:51
Ein wenig Grundlagenwissen in der Entwicklung von Datenbank-Anwendungen könnte hier nicht schaden. Dafür empfehle ich stets die
Datenbank-Tutorials beim Delphi-Treff [
http://www.delphi-treff.de/tutorials/datenbanken/]. Dort findest du dann z.B. auch den Hinweis, daß SQL-Befehle, die Datenmengen zurückliefern – mit anderen Worten: Select-Anweisungen –, bei Query- und Dataset-Komponenten stets ein Open erfordern, dagegen SQL-Befehle, die eine Datenmanipulation vornehmen, mit
ExecSQL [
http://docwiki.embarcadero.com/Libraries/XE5/de/Data.Win.ADODB.TADOQuery.ExecSQL] auszuführen sind. Deine Fehlermeldung weist dich bereits darauf hin, daß ein SQL-Delete-Befehl keine Ergebnismenge zurückliefert.
Auch auf die Gefahr hin, mich zu wiederholen: Aus Sicht eines Anfängers stellt die Datenbank-Entwicklung eine ziemlich komplexe Thematik dar, die man nicht einfach so durch Ausprobieren und ohne Tutorials bewältigen kann.
haentschman - So 26.07.15 18:47
Hallo... 8)
...und wenn du schon beim Lesen bist, beschäftige dich mit Parametern (Stichwort: ParamByName z.B.) in welchen die Werte übergeben werden. Das erspart dir später viel Stress mit den Quote Orgien. :P
Hänsel - So 26.07.15 22:28
Danke für die Info.
Die Kritik an mein Wissen hat ja richtig gesessen. Aber Du hast ja auch irgendwann mal angefangen. Trotzdem danke.
Wenn ich noch ein Beispiel für meine Frage haben könnte, wäre nicht schlecht.
Nochmal's besten Dank
Hänsel
Delete - Mo 27.07.15 00:44
Du hast bereits die Tutorials durchgearbeitet und dabei keine Beispiele gefunden? Die Tutorials bestehen doch eigentlich nur aus Beispielen, was darauf schließen läßt, daß du dir die Mühe mit den Tutorials nicht machen möchtest, sondern lieber funktionierenden Code hättest. Und ja, ich habe auch mal angefangen und Tutorials durchgearbeitet. Übrigens heißt es "an meinem Wissen" ...
Aber jetzt sag mal echt: was hast du daran, daß du statt des Open-Befehls einfach ExecSQL verwenden mußt, nicht verstanden? Soll ich dir etwa deine Codezeilen umschreiben oder schaffst du das dann doch noch selber?
Hänsel - Mi 29.07.15 14:11
Danke. Hat funktioniert.
Hänsel
baumina - Mi 29.07.15 14:21
Mit Parametern arbeiten, dann kann man sich die Quoterei (Anführungszeichen-Panik) komplett sparen.
OlafSt - Mi 29.07.15 15:02
...und man gerät auch nicht in die Gefahr, irgendwo eine Option auf SQL-Injection einzubauen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 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!