AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken FreePascal ListView/ListBox in Datenbank
Thema durchsuchen
Ansicht
Themen-Optionen

ListView/ListBox in Datenbank

Ein Thema von BerlinerBaer · begonnen am 9. Jan 2021
Antwort Antwort
BerlinerBaer

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

ListView/ListBox in Datenbank

  Alt 9. Jan 2021, 14:36
Datenbank: SQLite3 • Version: 3.33.0 • Zugriff über: DB Browser
Hallo.


erstmal wünsche ich euch ein frohes und gesundes neues Jahr. Nach langer Pause, versuche ich mich nun wieder an einem Projekt, an dem ich seit einigen Tagen nicht mehr weiter komme. Ich erstelle derzeit ein Haushaltsbuch um meine Finanzen im Überblick zu halten. Dieses werte ich später aus, um zu wissen, wann ich wofür wieviel Geld ausgegeben habe.

Um Resonanzen zu vermeiden, arbeite ich lieder mit zwei Tabellen.

Hier wird gespeichert, wo ich wann etwas gekauft habe.
einkauf_kategorie
ID
markt
datum

Hier wird angegeben, was ich zu welchem Preis gekauft habe.
einkauf
ID
katID
produkt
preis

Ich möchte den Inhalt von Edits einer ListView/ListBox der Tabelle "einkauf" zuordnen. Das klappt problemlos.
Nun stehe ich vor dem Problem, dass ich die ListView/ListBox in die Datenbank speichern möchte, ohne jedes mal INSERT INTO aufrufen zu müssen. Dass ich mehrere Daten gleichzeitig in die Datenbank bekomme, ist möglich:
Code:
ZQuery.SQL.Clear
ZQuery.Params.Clear

// CreateParam für die Kategorie.
ZQuery.Paramas.CreateParam(ftString, 'Markt' ptinput);
ZQuery.Paramas.CreateParam(ftDateTime, 'Datum' ptinput);
// CreateParam die einzelnen Produkte.
ZQuery.Paramas.CreateParam(ftString, 'Produkt' ptinput);
ZQuery.Paramas.CreateParam(ftFloat, 'Preis' ptinput);

// Parameter für die Kategorie mit Variablen befüllen.
ZQuery.ParamByName('Markt').Value:=MarktBezeichnung;
ZQuery.ParamByName('Datum').Value:=KaufDatum;
// Parameter für die einzelnen Produkte mit Variablen befüllen.
ZQuery.ParamByName('Produkt').Value:=KaufProdukt;
ZQuery.ParamByName('Preis').Value:=KaufPreis;

ZQuery.SQL.Text:='INSERT INTO einkauf_kategorie (markt, datum) VALUES (:markt, :datum)';
ZQuery.SQL.Text:='INSERT INTO einkauf (katID, produkt, preis) VALUES ((SELECT last_insert_rowid() FROM einkauf_kategorie), :Produkt, :KaufPreis);'
Damit kann ich nur ein Produkt eintragen, aber nicht die restlichen. Natürlich kann ich dem INSERT INTO auch mehrere Datensätze geben. Allerdings wäre das nicht dynamisch.
Code:
INSERT INTO tbl (col1, col2) VALUES (Wert1a, Wert1b), (Wert2a, Wert2b), (Wert3a, Wert3b);
Nun zu meinen Überlegungen, wie ich das alles am besten bewerkstellige. Dabei ging mir durch den Kopf mit Arrays zu arbeiten. Da die Anzahl der Produkte, die ich jedes mal kaufe, unterschiedlich ist, würde ich auf dynamische Arrays zurückgreifen. Bei denen kann ich ja den Endwert mittels Anzahl der Einträge in der ListView/ListBox ermitteln. Auch das funktioniert. Nur weiß ich leider nicht, wie ich die Arrays "entpackt" in die Datenbank bekomme.

Hat jemand Lösungsvorschläge?


Liebe Grüße
BerlinerBaer
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 15:21 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