DBGrid aus SQLite füllen

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Johannes55
Beiträge: 5
Registriert: Mo 23. Feb 2026, 17:20

DBGrid aus SQLite füllen

Beitrag von Johannes55 »

Hallo Forum.

Nachdem die Verbindung zu MYSQL/MariaDB nicht funktionierte, habe ich mich mit SQLITE beschäftigt.
Ich hab eine kleine Tabelle angelegt. Diese wird gelesen (Dataset ist gefüllt), aber nicht ins DBGrid ausgegeben.

SQLite3Connection1.Open;
SQLite3Connection1.Connected := True;
SQLTransaction1.DataBase := SQLite3Connection1;
SQLQuery1.DataBase := SQLite3Connection1;
SQLTransaction1.Active := True;
SQLQuery1.SQL.Clear;
Dbgrid1.Clear;
SQLQuery1.SQL.Text := 'SELECT * FROM Beitragsarten';

SQLQuery1.Open;
DataSource1.DataSet := SQLQuery1;
DataSource1.DataSet.Active := true;
// Wenn ich das in der Schleife prüfe, sind die Felder gefüllt. //<<<----
// while not Datasource1.Dataset.Eof do begin
DBGrid1.DataSource := DataSource1;
//showmessage(Datasource1.Dataset.FieldByName('Bezeichnung').AsString); // Inhalt ist korrekt
DBGrid1.AutoFillColumns := True; //<<<---- Hier wird das Grid gefüllt ???
// Datasource1.Dataset.next;
// end;

Datasource1.free;
SQLQuery1.Close;
Dateianhänge
unit1.lfm
(2.14 KiB) 200-mal heruntergeladen
unit1.pas
(2.08 KiB) 203-mal heruntergeladen

charlytango
Beiträge: 1234
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: DBGrid aus SQLite füllen

Beitrag von charlytango »

Um dir qualifiziert helfen zu können, ist ein Testprojekt immer eine gute Idee.
Dafür gibt es eine Funktion in Lazarus, die alle nötigen Dateien zur Verfügung stellt.
Menü: Project - Publish Project.

Wenn du im aufpoppenden Fenster noch die Endung deiner Datenbankdatei angibst wird auch diese samt allen nötigen Dateien in ein Zip eingepackt das du hier einstellen kannst.
Johannes55 hat geschrieben: Do 26. Feb 2026, 17:44 DBGrid1.AutoFillColumns := True; //<<<---- Hier wird das Grid gefüllt ???
Nein, der Grid wird (die richtigen Verbindungen vorausgesetzt) mit dem öffnen der Datenquelle gefüllt -- das hat nur etwas mit der Spaltenbreite zu tun.
https://lazarus-ccr.sourceforge.io/docs ... lumns.html

Das eigentliche Problem liegt woanders -- vermutlich in der Art zu denken.
Du Setzt ein Klick-Event eines Buttons ein, das ja komplett durchläuft.
Folgendes passiert also:
die DB wird geöffnet, die Verbindungen zum Grid hergestellt, die Query wird geöffnet, aber hier
Johannes55 hat geschrieben: Do 26. Feb 2026, 17:44 Datasource1.free;
SQLQuery1.Close;
// Transaktion bestätigen
SQLTransaction1.Commit;
Showmessage('Ende');
wird in einem Rutsch gleich wieder alles geschlossen.
Der DBGrid kann nichts anzeigen wenn die Datenquelle geschlossen ist.

Ach ja --> SELECT * bringt dich schnell in Teufels Küche

Beiliegend findest du ein lauffähiges Beispiel das einige Situationen darstellt.

Tip:
Pack deine Datenverbindung in ein Datenmodul, damit sie nicht jedesmal in einem Formular neu erstellt werden muss.
Die allermeisten Datenbankapplikationen brauchen nur eine Verbindung zum Server. Jedem Formular seine eigene Verbindung zu spendieren frisst Speicher - und das auch auf der Serverseite.
Dateianhänge
SQLite_Easy.zip
(495.6 KiB) 28-mal heruntergeladen

charlytango
Beiträge: 1234
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: DBGrid aus SQLite füllen

Beitrag von charlytango »

da gibt es noch eine neuere Version 8)
Dateianhänge
SQLite_Simple2.zip
(529.57 KiB) 18-mal heruntergeladen

Antworten