AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen FreePascal FreePascal Datenbankabfrage in Array speichern
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbankabfrage in Array speichern

Offene Frage von "BerlinerBaer"
Ein Thema von BerlinerBaer · begonnen am 9. Jun 2017 · letzter Beitrag vom 17. Jul 2017
 
BerlinerBaer

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

Datenbankabfrage in Array speichern

  Alt 9. Jun 2017, 19:56
Hallo Freunde des Programmierens,

ich komme gleich zum Punkt.

Wie bekomme ich unterschiedliche Werte einer Tabelle, die jedoch die selbe ID haben, in ein Array gespeichert?
Es geht mir um das gleichzeitige Löschen mehrerer Werte.

Als Beispiel:

Tabelle 1:
id: 1 | kat_id: 1
id: 2 | kat_id: 2
id: 3 | kat_id: 1
id: 4 | kat_id: 1
id: 5 | kat_id: 3
id: 6 | kat_id: 1

Kat_id ist eine Zuordnungs-ID für eine andere Tabelle. Das Ausgeben dieser IDs ist für mich kein Problem. Das Speichern in ein Array jedoch sehr.

In diesem Beispiel sollen nun alle ID's mit der kat_id 1 gelöscht werdenn. Meine Vorüberlegung war es, die DELETE-Funktion während des SELECTes durchzuführen. Nun ja, es kommt die Meldung, dass es Probleme mit der Perfomance gibt. Nun war meine zweite Idee, die zu löschenden IDs in ein Array zu speichern, welche dann gelöscht werden können. Nun meine Fragen.
1. Wie bekomme ich die unterschiedlichen IDs in ein Array?
2. Welches Array wäre besser, ein dynamisches oder statisches Array?
3. Wäre eine for-each-Schreife (wie in php) möglich? Wenn ja, wie?

Hier mir Quellcode:
Code:
procedure TFormMain.PopupMenuItemRechnungLoeschenClick(Sender: TObject);
var
  id, InfoTitel, InfoText : String;
  i : String;
begin
  InfoTitel:='Rechnung löschen?';
  InfoText:='Soll die ausgewählte Rechnung wirklich gelöscht werden?';
  if LVRechnungen.SelCount >= 1 then
    begin
      if QuestionDlg(InfoTitel, InfoText, mtWarning, [mrYes, 'Ja', mrNo, 'Nein'], 0) = mrYes then
        begin
          id:=LVRechnungen.Selected.Caption;
          ZQuery.SQL.Clear;
          ZQuery.Params.Clear;
          ZQuery.SQL.Text:='SELECT ReKatID, ReInhID FROM rechnungen_inhalt WHERE ReKatID='+#39+id+#39+' ORDER BY ReInhID DESC';
          ZQuery.Open;
          while not ZQuery.EOF do
            begin

              i:=ZQuery.FieldByName('ReInhID').AsString;
              ShowMessage(i);

              ZQuery.Next;
            end;
          ZQuery.Close;
          //ZQuery.SQL.Text:='DELETE FROM rechnungen_inhalt WHERE ReKatID='+#39+id+#39;
          //ZQuery.ExecSQL;
          //LVRechnungen.Selected.Delete;
        end;
    end;
end;
Weitere Informationen:
Datenbank-Protokoll: sqlite3
Datenbank-Schnittstelle: ZeosDB (sofern man das als Schnittstelle bezeichnen kann)
Programm: Lazarus IDE v1.6.2

Leider sind meine Kenntnisse noch auf einem relativ geringem Niveau, sodass ich um Hilfe bitten muss.

Über postive Rückmeldungen würde ich mich sehr freuen.

Liebe Grüße
BerlinerBaer

Geändert von BerlinerBaer ( 9. Jun 2017 um 20:01 Uhr)
  Mit Zitat antworten Zitat
 

 

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 11:50 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