Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   DeleteSQL (https://www.delphipraxis.net/185958-deletesql.html)

Luckner 22. Jul 2015 09:11

Datenbank: Firebird • Version: 1.5 • Zugriff über: Dataset

DeleteSQL
 
Hallo,
habe ein Problem mit der u.g. Routine einige Datensätze in einer Tabelle zu löschen. Die Tabell gibts es, die Felde ebenfalls und die Datensätze auch. Bekommen eine Fehlermeldung "IBDatasetArtikelStanzen: Operation bei leeren Datenmenge nicht ausführbar"

Delphi-Quellcode:
DataArtikelStanzen.IBDatabaseArtikelStanzen.Close;
 DataArtikelStanzen.IBDataSetArtikelStanzen.DeleteSQL.Clear;
 DataArtikelStanzen.IBDataSetArtikelStanzen.DeleteSQL.Text := 'delete from ARTIKELSTANZEN where ARTIKEL_ID = ' +  QuotedStr(IntToStr(selectArtikel));
 DataArtikelStanzen.IBDataSetArtikelStanzen.Open;
 DataArtikelStanzen.IBDataSetArtikelStanzen.Delete;
Was sehe ich hier nicht?
Danke.

Bernhard Geyer 22. Jul 2015 09:20

AW: DeleteSQL
 
Ein .Open liefert eine Ergebnismenge zurück. Wie soll es eine Ergebnismenge bei einem "DELETE ..." geben?

Dafür gibts die Exec(SQL)-Methode wenn man SQL-Statements ohne Ergebnismenge ausführen will.

Luckner 22. Jul 2015 09:37

AW: DeleteSQL
 
Delphi-Quellcode:
 DataArtikelStanzen.IBDatabaseArtikelStanzen.Close;
 DataArtikelStanzen.IBDataSetArtikelStanzen.DeleteSQL.Clear;
 DataArtikelStanzen.IBDataSetArtikelStanzen.DeleteSQL.Text := 'delete from ARTIKELSTANZEN where ARTIKEL_ID = ' +  QuotedStr(IntToStr(selectArtikel));
 DataArtikelStanzen.IBDataSetArtikelStanzen.ExecSQL;
So bekommen ich die Meldung "Verwenden Sie Open für eine select-Anweisung"

blawen 22. Jul 2015 09:41

AW: DeleteSQL
 
Zitat:

Zitat von Luckner (Beitrag 1309468)
Delphi-Quellcode:
'delete from

Fehlt da nicht was?
Delphi-Quellcode:
delete * from...

Luckner 22. Jul 2015 09:58

AW: DeleteSQL
 
* wird bei delete nicht verwendet. Es wird der gesamter Datensatz gelöscht.

mkinzler 22. Jul 2015 09:58

AW: DeleteSQL
 
Das Statement unter DeleteSQL wird aufgerufen, wenn man ein <DataSet>.Delete durchführt.
Lass Dir dies am Besten in der IDE erstellen, dann wird diese parametrisiert angelegt.

x000x 22. Jul 2015 10:02

AW: DeleteSQL
 
Das Statement denke ich passt schon so... Ich kenne die Komponente nicht, gehe aber davon aus, dass wenn es ein .DeleteSQL gibt, dass es dafür dann auch einen gesonderten Aufruf gibt. Ein .ExecSQL bezieht sich vermutlich auf die Eigenschaft .SQL und nicht auf .DeleteSQL

BadenPower 22. Jul 2015 10:06

AW: DeleteSQL
 
Zitat:

Zitat von Luckner (Beitrag 1309468)
So bekommen ich die Meldung "Verwenden Sie Open für eine select-Anweisung"

Und was steht in der .SelectSQL?

Zitat:

Zitat von Luckner (Beitrag 1309460)
Fehlermeldung "IBDatasetArtikelStanzen: Operation bei leeren Datenmenge nicht ausführbar"

Du bekommst scheinbar durch das .Open eine leere Datenmenge zurückgeliefert.

FBrust 22. Jul 2015 10:12

AW: DeleteSQL
 
Hallo,

Zitat:

DataArtikelStanzen.IBDataSetArtikelStanzen.DeleteS QL.Text := 'delete from ARTIKELSTANZEN where ARTIKEL_ID = ' + QuotedStr(IntToStr(selectArtikel));
ergäbe als Beispiel

delete from ARTIKELSTANZEN where ARTIKEL_ID = '7'


Ist das Feld ARTIKEL_ID ein String-Feld (z. B. varchar)?

Falls nicht, wäre das QuotedStr überflüssig.

Gruß
Frank

mkinzler 22. Jul 2015 10:13

AW: DeleteSQL
 
Zitat:

Zitat von x000x (Beitrag 1309475)
Das Statement denke ich passt schon so...

Zitat:

Nein es stimmt nicht.
Ich kenne die Komponente nicht, gehe aber davon aus, dass wenn es ein .DeleteSQL gibt, dass es dafür dann auch einen gesonderten Aufruf gibt.
Ja <DataSet>.Delete
Zitat:

Ein .ExecSQL bezieht sich vermutlich auf die Eigenschaft .SQL und nicht auf .DeleteSQL
Ja. Wenn man dort ein DML Statement hinterlegt.
Wenn man man mit DataSets arbeitet, führt

.Open das SelectSQL
.Delete das DeleteSQL
usw. aus.

Die Statement müssen entsprechend parametrisiert sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:26 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz