Thema: Delphi ListBox in DB speichern

Einzelnen Beitrag anzeigen

Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#2
  Alt 5. Mai 2003, 17:36
Hallo Hansa,
das ist nicht weiter schlimm.
Den Inhalt einer ListBox kann man prima in einen Blobfield speichern.
Dafür habe ich Dir ein Beispiel angehängt.
Die Beispiel Tabelle lb.gdb muss im Verzeichnis D:\Delphi5\Test\Tlistbox in IB Database liegen und der Interbase-Server muss laufen, wenn Du die EXE testen möchtest. Weiterhin enthält die Tabelle LBTABLE ein Feld mit dem Namen ID. Dies ist der Primary-Key der Tabelle und muss eindeutige Werte enthalten. Den Wert für ID hole ich über eine StoredProc und einen Generator. Da ich es erst bei 28ten Versuch geschafft habe einen Datensatz in die Tabelle zu schieben kann man die Daten erst ab ID=28 selecten (wird im Spinedit eingestellt). Da ich gerade auf meiner Terrasse am Laptop sitze und auf dem Ding noch die IBX-Version war, die mit D5 ausgeliefert wird musste ich erst auf die Version 5.03 für D5 SP1 updaten. Erst mit diesem Update läuft das Programm.

IBX 5.03

{Ich gehe davon aus, dass kein DBGrid und keine TDatasource verwenden möchtest}
Wenn Du ein StringGrid in eine Datenbank schieben möchtest, dann lege Dir in der Datenbank eine Tabelle an, die genau soviele Felder hat wie das StringGrid. Plus einer Spalte für einen Primary-Key. Der Primary-Key sollte so etwas wie ein AutoInc-Feld sein. Über den Primary-Key kannst Du dann den Datensatz eindeutig identifizieren. Wie ich AutoInc-Felder erzeuge habe ich im TListBox-Beispiel gezeigt.
Jetzt kannst Du in einer TIBDataset ein Insert-SQL zusammenbastelen (mit Parametern) und Dein StringGrid zeilenweise in die Datenbank posten.
Wenn Du allerdings in Deinem StringGrid Datensätze hast, die schon in der Datenbank sind, dann wird es komplizierter.
Dann musst Du die Fälle Insert, Update und Delete unterscheiden.
Für diesen Fall empfehle ich Dir das Du Dir eine Objektstruktur anlegst, die die eigentlichen Daten enthält und das Du das StringGrid nur zur Visualisierung der Daten verwendest. Mit zwei TList Objekten kann man eine solche Objektstruktur aufbauen.
Leider ist die Sache so komplex, dass ich noch nicht weiss wie ich es hier ins Forum posten soll.
Angehängte Dateien
Dateityp: zip lb2ib.zip (330,1 KB, 36x aufgerufen)
  Mit Zitat antworten Zitat