Einzelnen Beitrag anzeigen

BerlinerBaer

Registriert seit: 14. Feb 2017
Ort: Berlin
4 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Datenbankabfrage in Array speichern

  Alt 11. Jun 2017, 12:25
Hallo BerlinerBaer,
willkommen in der Delphi-Praxis.
Hallo p80286 (K-H),

vielen Dank für die Begrüßung.

Das Problem jedoch ist folgender, dass ich nicht nur eine, sondern alle mit der selbigen ReKatID löschen möchte. Dazu war mein Beispiel oben etwas verwirrend.

So sollte es aussehen:
Tabelle 1:
ReInhID (auto_inc + Primärer Schlüssel) | ReKatID (Verweis auf eine andere Tabelle 2)
ReInhID: 1 | ReKatID: 1
ReInhID: 2 | ReKatID: 2
ReInhID: 3 | ReKatID: 1
ReInhID: 4 | ReKatID: 1
ReInhID: 5 | ReKatID: 3
ReInhID: 6 | ReKatID: 1

Tabelle 2:
ReKatID: 1
ReKatID: 2
ReKatID: 3
...fortlaufend

Die 2. Tabelle interessiert mich momentan eher weniger, da ich dort nur ein Datensatz löschen muss. Die entsprechende ReKatID hole ich mir aus einer TListView.

2)Wenn Du
Delphi-Quellcode:
 ZQuery.SQL.Text:='SELECT ReKatID, ReInhID FROM rechnungen_inhalt WHERE ReKatID='+#39+id+#39+' ORDER BY ReInhID DESC';
...
ZQuery.SQL.Text:='DELETE FROM rechnungen_inhalt WHERE ReKatID='+#39+id+#39;
ReKatID übergibst um die Daten abzufragen, dann kannst Du auch gleich ein Delete Durchführen.
Wenn ich während der while-Schleife, also während der Abfrage die entsprechenden ReKatIDs der Tabelle lösche, dann löscht er nur eine, wobei mir auch die entsprechende Fehlermeldung nicht gefällt.

Zitat:
Operation cannot be performed on an inactive dataset.

Press ok.....
Ich muss auf jeden Fall die ReInhID's in ein array speichern, sodass diese mittels
Code:
ZQuery.SQL.Text:='DELETE FROM rechnungen_inhalt WHERE ReInhID IN (1, 3, 4, 6)';
gelöscht werden können. Nur daran verzweifel ich irgendwie.

3) Du solltest Dir gleich angewöhnen Parameter zu nutzen
Ja, das wurde mir auch schon gesagt. Nur verstehe ich da nicht so ganz den Sinn. Ob ich es als Parameter oder als var verwende, ist für mich unlogisch. Liegt vielleicht daran, dass ich mir zu wenig mit Pascal und zu sehr mit PHP auskenne.

Zitat von haentschman:
//ZQuery.SQL.Clear; //nicht nötig
//ZQuery.Params.Clear; //nicht nötig
Hallo haentschman,

wieso ist das nicht nötig? Es geht doch hierbei um die Vermeidung eventueller Fehler. Ich benutze SQL.Text und Params nicht nur ein mal im kompletten Quelltext. Mir wurde erklärt, dass das immer eine Prävention zu eventuell auftretenden Fehlern ist.


Liebe Grüße
BerlinerBaer
  Mit Zitat antworten Zitat