![]() |
Re: [mySQL]: Fehler in der Abfrage, aber wo?
Außerdem sollte es knallen, wenn sich dein DBGrid aktualisiert.
Schließlich liefert dein DELETE-Statement keine Ergebnismenge zurück, aber du lässt dieses Statement in der Query. ;) Ich habe wenig Erfahrung mit den DB Aware Kompos, aber das sollte IMHO gehen:
Delphi-Quellcode:
Var
ActiveID :integer; Begin ActiveID := ZQuery2.FieldByName ('id').AsInteger; With [DeineQueryKlasse].Create(self) Do Try Session := ZQuery2.Session; //kA wie das bei dem ZEOS-Zeugs heißt SQL.Text := 'DELETE FROM Bestellungen' + #10 + 'WHERE DeinPrimKey = :i_PrimKey'; // Werte an Query Parameter übergeben... ParamByName('i_PrimKey').AsInteger := ActiveID; ExecSQL; Finally free; End; End; |
Re: [mySQL]: Fehler in der Abfrage, aber wo?
So funzt es:
Delphi-Quellcode:
Die Procedure LoadAlreadyOrdered läd einfach das DBGrid neu. Thx für eure Hilfe!!
var ITitel, ILehrer, IVerlag, IBestellnr:string;
IPreis: Double; IAnzahl: Integer; begin ITitel :=ZQuery2.fieldbyname('Titel').AsString; IAnzahl :=ZQuery2.fieldbyname('Anzahl').AsInteger; ILehrer :=ZQuery2.fieldbyname('Lehrer').AsString; IVerlag :=ZQuery2.fieldbyname('Verlag').AsString; IBestellnr :=ZQuery2.fieldbyname('Bestellnr').AsString; IPreis :=ZQuery2.fieldbyname('Preis').AsFloat; ZQuery2.SQL.Text :='DELETE FROM `bestellungen` WHERE `Titel` = :ITitel AND `Anzahl` =:IAnzahl AND `Lehrer` =:ILehrer AND `Verlag` =:IVerlag AND `Bestellnr` =:IBestellnr AND CONCAT( `Preis` ) =:IPreis LIMIT 1'; ZQuery2.ParamByName('ITitel').Value :=ITitel; ZQuery2.ParamByName('IAnzahl').Value :=IAnzahl; ZQuery2.ParamByName('ILehrer').Value :=ILehrer; ZQuery2.ParamByName('IVerlag').Value :=IVerlag; ZQuery2.ParamByName('IBestellnr').Value :=IBestellnr; ZQuery2.ParamByName('IPreis').Value :=IPreis; ZQuery2.ExecSQL; LoadAlreadyOrdered; |
Re: [mySQL]: Fehler in der Abfrage, aber wo?
Hai yankee,
warum machst Du es denn nicht über den Primärschlüssel (ID) der Tabelle :?: Bitte nicht falsch verstehen aber so wirst Du keine Freude an der DB-Programmierung haben ;-) |
Re: [mySQL]: Fehler in der Abfrage, aber wo?
Das Problem dabei ist, dass ich die Daten IMMER nach Titeln sortiert ausgeben will. Und da fand ich esa ganz sinnig, alles dierekt richtig abzuspeichern, da ich so den Server ja auch Arbeit erspare...
Grundsätzlich könntest du aber recht haben. Habe aber bis jetzt außer in Feinheiten (kürzere Abfragebefehle) noch keinen Vorteil gesehen... |
Re: [mySQL]: Fehler in der Abfrage, aber wo?
Du speicherst ja nichts sonder möchtest einen Eintrag löschen. Und über einen Primärschlüssel ist es am sichersten dies zu machen. Denn der Server stellt sicher das jeder Datensatz eine eindeutigen ID hat. Somit ist es unmöglich versehentlich etwas falsches zu löschen.
Mit der Sortierung hat das ja nichts zu tun. |
Re: [mySQL]: Fehler in der Abfrage, aber wo?
Aber wenn ich ein Feld mit allem anspreche, ist das doch auch eindeutig, oder? Selbst wenn es zwei Felder gibt, die exakt gleich sind, dann löscht der Punkt LIMIT 1 nur eins...
|
Re: [mySQL]: Fehler in der Abfrage, aber wo?
Zitat:
|
Re: [mySQL]: Fehler in der Abfrage, aber wo?
Zitat:
es gibt nichts eindeutigeres, um einen datensatz zu kennzeichnen, als einen primary key. somit ersparst du dir den ganzen wust an unnötigen parametern. mfg, stefan |
Re: [mySQL]: Fehler in der Abfrage, aber wo?
Ich habe diese Datensätze:
Bezeichnung User Ort Baum DAU Dorf-Wald Baum DAU Dorf-Wald Wenn ich von den beiden Datensätzen nun den falsch lösche, würde doch keinem was auffallen, oder? Aber im Grunde habt ihr Recht, mit 'ner ID wird's wohl leichter sein. Das mache ich das nächste mal machen... |
Re: [mySQL]: Fehler in der Abfrage, aber wo?
Zitat:
falls es sich um eine tabelle der registrierten user handelt schon. bei einer anderen tabelle braucht man nur ein feld mit einem fremdindex einrichten, welches auf den eindeutigen eintrag in der usertabelle verweist. na stell dir vor, der user Dau (ihr habt auch einen Dau? unserer heisst 'Leonhard Dau'. kein witz ;) ) übersiedelt von Dorf-Wald nach Ackerstadt. das gibt jede menge aktualisierungen :mrgreen: mfg, stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz