Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi löschen von datensätzen (https://www.delphipraxis.net/66498-loeschen-von-datensaetzen.html)

sancho1980 30. Mär 2006 14:24

Datenbank: interbase 6.5 • Zugriff über: ibx, ibexpert

löschen von datensätzen
 
hallo
ich habe eine ibdataset - komponente und will nun damit einen datensatz löschen
leider funktioniert das nicht wie ich's mir vorstelle

das delete-sql-statement lautet folgendermaßen:

delete from tabelle
where
ID = :ID

mein löschversuch sieht dann im code folgendermaßen aus:
SQL-Code:
DataSet.Edit();
DataSet.ParamByName('ID').AsInteger := Zahl;
DataSet.Delete();
Leider bekomm ich dann immer die Meldung: Not in edit mode.

Kann mir das einer erklären?

Danke,
Martin

Bernhard Geyer 30. Mär 2006 14:26

Re: löschen von datensätzen
 
Weil Delete nur sinnvoll ist wenn du eine Select-Anweisung hast.
Für eine DELETE...-Anweisung must du die SQL-Anweisung ausführen:
Delphi-Quellcode:
DataSet.Execute;

sancho1980 30. Mär 2006 14:30

Re: löschen von datensätzen
 
die TDataSet und Nachfahren davon haben aber gar keine Execute-Methode

mkinzler 30. Mär 2006 14:38

Re: löschen von datensätzen
 
Delphi-Quellcode:
DataSet.ParamByName('ID').AsInteger := Zahl;
DataSet.Edit();
DataSet.Delete();

dataspider 30. Mär 2006 15:01

Re: löschen von datensätzen
 
Zitat:

Zitat von mkinzler
Delphi-Quellcode:
DataSet.ParamByName('ID').AsInteger := Zahl;
DataSet.Edit();
DataSet.Delete();

Hi,

man sollte sich schon entscheiden, ob man ändern oder löschen will.
Dann wäre dein SQL für Select und Delete noch interessant.
Normalerweise reicht ein Delete, sofern das DataSet offen ist.

Delphi-Quellcode:
DataSet.ParamByName('ID').AsInteger := Zahl;
// ich gehe davon aus, dass das DataSet geschlossen ist
// oder warum setzt du den Parameter hier im Code?
DataSet.Open;
if not DataSet.Eof then
  DataSet.Delete;
Cu, Frank

Jelly 30. Mär 2006 21:37

Re: löschen von datensätzen
 
SQL Befehle mittels Update liefern keine Ergebnismengen, und können, um anzufangen, schon mal garnicht editiert werden. Man hat lso 2 Möglîchkeiten:
a. entweder du verwendest den von Dir verwendeten SQL Befehl, und sendest den so einfach zum SQL Server. Das geht weder micht Edit, noch mit Delete, sondern einfach durch Übermitteln des Befehls mittels ExecSql.
b. Du öffnest einfach die Tabelle, also ohne den von dir benannten SQL Befehl, bewegst Dich zu dem entsprechendem Record, und löscht ihn mit "Delete".

Methode a. ist da zu bevorzugen, aber beide Methoden mischen kannst Du natürlich nicht.

sancho1980 31. Mär 2006 11:43

Re: löschen von datensätzen
 
ah ok
hatte mir das anders vorgestellt :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:09 Uhr.

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