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 2 von 3     12 3      
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#11

AW: DeleteSQL

  Alt 22. Jul 2015, 11:14
Versuch es doch mal so:
Delphi-Quellcode:
 DataArtikelStanzen.IBDatabaseArtikelStanzen.Close;
 DataArtikelStanzen.IBDatabaseArtikelStanzen.SQL.Text:='delete from Tabelle where id=123456';
 DataArtikelStanzen.IBDatabaseArtikelStanzen.ExecSQL;
// vllt. noch die betroffenen Zeilen auslesen
 DataArtikelStanzen.IBDatabaseArtikelStanzen.Close;
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#12

AW: DeleteSQL

  Alt 22. Jul 2015, 11:21
Versuch es doch mal so:
Delphi-Quellcode:
 DataArtikelStanzen.IBDatabaseArtikelStanzen.Close;
 DataArtikelStanzen.IBDatabaseArtikelStanzen.SQL.Text:='delete from Tabelle where id=123456';
 DataArtikelStanzen.IBDatabaseArtikelStanzen.ExecSQL;
// vllt. noch die betroffenen Zeilen auslesen
 DataArtikelStanzen.IBDatabaseArtikelStanzen.Close;
Ich schätze, damit verbiegt man die Datenquelle des Dataset und macht es ~nur noch schlimmer.
MKINZLER hat schon die richtigen Hinweise gegeben. DeleteSQL ist nicht für den manuellen Aufruf gedacht, sondern implementiert die Umsetzung des Dataset.Delete.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

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

AW: DeleteSQL

  Alt 22. Jul 2015, 11:32
Fehlt da nicht was?
delete * from...
Nö. Nur Pseudodatenbanken wie MS Access verlangen (teilweise) das * bei dieser DML-Anweisung
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#14

AW: DeleteSQL

  Alt 22. Jul 2015, 11:36
Versuch es doch mal so:
Delphi-Quellcode:
 DataArtikelStanzen.IBDatabaseArtikelStanzen.Close;
 DataArtikelStanzen.IBDatabaseArtikelStanzen.SQL.Text:='delete from Tabelle where id=123456';
 DataArtikelStanzen.IBDatabaseArtikelStanzen.ExecSQL;
// vllt. noch die betroffenen Zeilen auslesen
 DataArtikelStanzen.IBDatabaseArtikelStanzen.Close;
Ich schätze, damit verbiegt man die Datenquelle des Dataset und macht es ~nur noch schlimmer.
MKINZLER hat schon die richtigen Hinweise gegeben. DeleteSQL ist nicht für den manuellen Aufruf gedacht, sondern implementiert die Umsetzung des Dataset.Delete.
Könntest Du mir das mal erklären?
Nach meinem Verständnis verbirgt sich hinter DataArtikelStanzen.IBDatabaseArtikelStanzen. eine Query und dann sollte das passen, oder hab ich da was in den falschen Hals bekommen?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Luckner

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

AW: DeleteSQL

  Alt 22. Jul 2015, 11:58
Hinter "DataArtikelStanzen.IBDatabaseArtikelStanzen" verbirgt sich ein Dataset. Komisch, ich habe es schon so einigemale benutzt ohne Probleme. Auch ohne dem "where ...". Habe auch für ARTIKEL_ID eine 3 gesetzt, wie in der Tabelle. QuotedStr ist falsch an dieser Stelle (war nur ein Versuch).Immer wieder der selber Fehler.

Hier noch ein Beispiel:
Delphi-Quellcode:
  DataModuleAlternativMaterial.MatZuKunden_Grid.Close;
  DataModuleAlternativMaterial.MatZuKunden_Grid.DeleteSQL.Clear;
  DataModuleAlternativMaterial.MatZuKunden_Grid.DeleteSQL.Text := 'DELETE FROM MATZUKUNDEN WHERE MATERIALID LIKE ' + IntToStr(selectmaterial);
  DataModuleAlternativMaterial.MatZuKunden_Grid.Open;
und es funktioniert.

Delphi-Quellcode:
  DatamodulePlannung.DataModule5.IBDataSetGridPlannung.Close;
  DatamodulePlannung.DataModule5.IBDataSetGridPlannung.DeleteSQL.Clear;
  DatamodulePlannung.DataModule5.IBDataSetGridPlannung.DeleteSQL.Text := 'delete from PLANUNG';
  DatamodulePlannung.DataModule5.IBDataSetGridPlannung.Open;
  DatamodulePlannung.DataModule5.IBDataSetGridPlannung.Delete;
auch das funktioniert.
  Mit Zitat antworten Zitat
BadenPower

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

AW: DeleteSQL

  Alt 22. Jul 2015, 12:17
Hinter "DataArtikelStanzen.IBDatabaseArtikelStanzen" verbirgt sich ein Dataset.
...
Immer wieder der selber Fehler.
Hast Du jetzt schon einmal überprüft, od die Datenmenge nach dem .Open überhaupt Datensätze enthält.

Die Fehlermeldung deutet darauf hin, dass die Datenmenge LEER ist und kein Datensatz nach dem .Open vorhanden ist.
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
Luckner

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

AW: DeleteSQL

  Alt 22. Jul 2015, 12:20
Mit " Label138.Caption := IntToStr(DataArtikelStanzen.IBDataSetArtikelStanze n.RecordCount); stelle ich fest, dass RecordCount = 0 ist, obwohl mindestens 2 Datensätze drin sind. Deshalb ist nichts zu löschen da. Also werde ich mir mal das Dataset anschauen.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#18

AW: DeleteSQL

  Alt 22. Jul 2015, 12:23
Es ist immer ganz wichtig so wenig Query-Komponenten zu verwenden, wie nur irgend möglich. Am Besten nur eine verwenden, dann hat man das Golden Ring-Anti-Pattern perfekt umgesetzt.
Zitat:
One Query-Component to rule them all.
Dieser Unfug ist tatsächlich sehr verbreitet.

Warum keine PlanungDeleteQuery die fix und fertig da ist und ausschließlich zum Löschen von einem Planungsdatensatz vorhanden ist?

Eine Methode davor gebaut
Delphi-Quellcode:
procedure TMyDataModule.DeletePlanung( PlanungID: Integer );
begin
  PlanungDeleteQuery.ParamByName( 'ID' ).Value := PlanungID;
  PlanungDeleteQuery.ExecSQL;
end;
Evtl. viel zu einfach und zu sehr straight forward ...
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#19

AW: DeleteSQL

  Alt 22. Jul 2015, 12:30
@Sir Rufo
DRY?
Warum für 50 Fragestellungen 50 Querys definieren wenn 50 x SQLText reicht?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#20

AW: DeleteSQL

  Alt 22. Jul 2015, 12:32
@Sir Rufo
DRY?
Warum für 50 Fragestellungen 50 Querys definieren wenn 50 x SQLText reicht?

Gruß
K-H
Wegen Prepared Statements => Performance?

Hier haben wir es allerdings mit einem SuperGAU zu tun. Die Query wird zur Anzeige von Daten verwendet und wird dann mal flugs umgebaut. Da kräuseln sich einem die Nackenhaare.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (22. Jul 2015 um 12:34 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 00:37 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