DBGrid aus SQLite füllen
-
Johannes55
- Beiträge: 8
- Registriert: Mo 23. Feb 2026, 17:20
DBGrid aus SQLite füllen
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;
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;
-
charlytango
- Beiträge: 1236
- 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
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.
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
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.
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.
Nein, der Grid wird (die richtigen Verbindungen vorausgesetzt) mit dem öffnen der Datenquelle gefüllt -- das hat nur etwas mit der Spaltenbreite zu tun.Johannes55 hat geschrieben: Do 26. Feb 2026, 17:44 DBGrid1.AutoFillColumns := True; //<<<---- Hier wird das Grid gefüllt ???
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
wird in einem Rutsch gleich wieder alles geschlossen.Johannes55 hat geschrieben: Do 26. Feb 2026, 17:44 Datasource1.free;
SQLQuery1.Close;
// Transaktion bestätigen
SQLTransaction1.Commit;
Showmessage('Ende');
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) 39-mal heruntergeladen
-
charlytango
- Beiträge: 1236
- 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
da gibt es noch eine neuere Version 
- Dateianhänge
-
SQLite_Simple2.zip- (529.57 KiB) 44-mal heruntergeladen
- Zvoni
- Beiträge: 565
- Registriert: Fr 5. Jul 2024, 08:26
- OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
- CPU-Target: 64Bit
- Wohnort: BW
Re: DBGrid aus SQLite füllen
Und was hat da nicht funktioniert? Siehe auch dein anderer Thread.Johannes55 hat geschrieben: Do 26. Feb 2026, 17:44 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.
Nicht die Flinte ins Korn werfen.
Die Verbindung mit MySQL ist einfach, solange ein paar Spielregeln eingehalten werden.
Alles danach ist es dann egal, ob du MySQL, PostGres, SQLite oder die Sockenschublade nimmst: Ablauf ist immer gleich
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.
-
charlytango
- Beiträge: 1236
- 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
So eine Anbindung mit SQLDB an seine Sockenschublade würde ich schon gerne sehen.Zvoni hat geschrieben: Fr 27. Feb 2026, 12:43 Alles danach ist es dann egal, ob du MySQL, PostGres, SQLite oder die Sockenschublade nimmst: Ablauf ist immer gleich
Möglicherweise tauchen dann die Socken auf die paarweise in die Waschmaschine kommen aber einzeln heraus
-
Johannes55
- Beiträge: 8
- Registriert: Mo 23. Feb 2026, 17:20
Re: DBGrid aus SQLite füllen
Hallo Charlytango
Danke für die zahlreichen Infos.
Bevor ich weiss, ob ich mit dieser Umgebung arbeiten kann, stecke ich keine Arbeit rein.
Das Beispiel ist "Quick + dirty", aber zum Testen sollte es doch ausreichen.
Wenn ich z.B. im Debug-Mode mit F8 Einzelschritte ausführen, ist das Dstaset korrekt gefüllt.Warum nicht das Grid?
Das ist z.Zt. Mein Problem.
Ich habe z..B. Im Grid Columns mit den Namen der DB-Felder angelegt. So kannte ich das bisher in Delphi, aber da benutzten wir eigene Komponenten.
Gruß Johannes
Danke für die zahlreichen Infos.
Bevor ich weiss, ob ich mit dieser Umgebung arbeiten kann, stecke ich keine Arbeit rein.
Das Beispiel ist "Quick + dirty", aber zum Testen sollte es doch ausreichen.
Wenn ich z.B. im Debug-Mode mit F8 Einzelschritte ausführen, ist das Dstaset korrekt gefüllt.Warum nicht das Grid?
Das ist z.Zt. Mein Problem.
Ich habe z..B. Im Grid Columns mit den Namen der DB-Felder angelegt. So kannte ich das bisher in Delphi, aber da benutzten wir eigene Komponenten.
Gruß Johannes
Re: DBGrid aus SQLite füllen
Hast du das DBGrid mit der DataSource verbunden?Johannes55 hat geschrieben: Fr 27. Feb 2026, 18:23 Wenn ich z.B. im Debug-Mode mit F8 Einzelschritte ausführen, ist das Dstaset korrekt gefüllt.Warum nicht das Grid?
Code: Alles auswählen
DBGrid1.DataSource := DataSource1;Und du musst, um das Grid zu befüllen, nicht die Records einzeln durchlaufen. Einfach SQLConnection verbinden (SQLite3Connection1.Connect), Query öffnen (SQLQuery1.Open) - und das Grid füllt sich automatisch (sofern die Verbindungen gemacht sind: DBGrid1.Datasource := DataSource1; und DataSource1.Dataset := SQLQuery1).
-
Johannes55
- Beiträge: 8
- Registriert: Mo 23. Feb 2026, 17:20
Re: DBGrid aus SQLite füllen
Hallo.
Du hast wahrscheinlich übersehen, dass die Zuordnungen vorhanden sind. Die Schleife ist inaktiv, da kommentiert. War nur zum Testen, ob Dataset gefüllt ist
Du hast wahrscheinlich übersehen, dass die Zuordnungen vorhanden sind. Die Schleife ist inaktiv, da kommentiert. War nur zum Testen, ob Dataset gefüllt ist