AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DeleteSQL

Ein Thema von Luckner · begonnen am 22. Jul 2015 · letzter Beitrag vom 22. Jul 2015
Antwort Antwort
Seite 1 von 3  1 23      
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#1

DeleteSQL

  Alt 22. Jul 2015, 10:11
Datenbank: Firebird • Version: 1.5 • Zugriff über: Dataset
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.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: DeleteSQL

  Alt 22. Jul 2015, 10:20
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: DeleteSQL

  Alt 22. Jul 2015, 10:37
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"
  Mit Zitat antworten Zitat
Benutzerbild von blawen
blawen

Registriert seit: 1. Dez 2003
Ort: Luterbach (CH)
679 Beiträge
 
Delphi 12 Athens
 
#4

AW: DeleteSQL

  Alt 22. Jul 2015, 10:41
Fehlt da nicht was?
delete * from...
Roland
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: DeleteSQL

  Alt 22. Jul 2015, 10:58
* wird bei delete nicht verwendet. Es wird der gesamter Datensatz gelöscht.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: DeleteSQL

  Alt 22. Jul 2015, 10:58
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.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#7

AW: DeleteSQL

  Alt 22. Jul 2015, 11:02
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
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#8

AW: DeleteSQL

  Alt 22. Jul 2015, 11:06
So bekommen ich die Meldung "Verwenden Sie Open für eine select-Anweisung"
Und was steht in der .SelectSQL?

Fehlermeldung "IBDatasetArtikelStanzen: Operation bei leeren Datenmenge nicht ausführbar"
Du bekommst scheinbar durch das .Open eine leere Datenmenge zurückgeliefert.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
654 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: DeleteSQL

  Alt 22. Jul 2015, 11:12
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
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: DeleteSQL

  Alt 22. Jul 2015, 11:13
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.
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:58 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