Autor Beitrag
Hänsel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 144



BeitragVerfasst: So 26.07.15 16:15 
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

ausblenden 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 user profile iconNarses: Delphi-Tags hinzugefügt
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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. 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 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 285
Erhaltene Danke: 33


DX10 Berlin Professional
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 144



BeitragVerfasst: 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
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 144



BeitragVerfasst: Mi 29.07.15 14:11 
Danke. Hat funktioniert.

Hänsel
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 29.07.15 14:15 
Statt deiner "Hochkomma-Orgie" beim Erstellen eines SQL-Statements, das eine nicht-numerischen Wert enthält, könntest du auch einfach die Funktion QuotedStr(MyString) verwenden. Gibt's auch als Ansi-Version.
baumina
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 305
Erhaltene Danke: 61

Win 7
Delphi 10.2 Tokyo Enterprise
BeitragVerfasst: Mi 29.07.15 14:21 
Mit Parametern arbeiten, dann kann man sich die Quoterei (Anführungszeichen-Panik) komplett sparen.
OlafSt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 486
Erhaltene Danke: 99

Win7, Win81, Win10
Tokyo, VS2017
BeitragVerfasst: Mi 29.07.15 15:02 
...und man gerät auch nicht in die Gefahr, irgendwo eine Option auf SQL-Injection einzubauen.

_________________
Lies, was da steht. Denk dann drüber nach. Dann erst fragen.