Wie kann ich eine Datenbank über ein TGrid updaten?

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
alfware17
Beiträge: 134
Registriert: Di 14. Dez 2010, 23:27

Wie kann ich eine Datenbank über ein TGrid updaten?

Beitrag von alfware17 »

Es ist vielleicht für ganz viele von Euch eine leichte Einsteiger-Frage, für mich ist es jedoch seit Jahren ein großes Rätsel... Nein keine Angst, solange probiere ich nicht, ich habe nur gerade ein altes Programm von 2017 wiedergefunden und erschreckt festgestellt, daß ich das Edit/Update-Problem damals keinesfalls gelöst hatte und schlimmer, daß anscheinend nicht einmal Code für ein Datenbank-Update drin ist.

Also die Anzeige funktioniert, ich kann die Tabelle im Grid sehen und scrollen. Ein Feld öffnet sich auf Klick auch in einem extra Fenster und dessen Inhalt sollte eigentlich nach dem Klick auf "Update" gesichert werden. Nur finde ich ehrlich gesagt zwar rudimentär ein wenig Code mit ApplyUpdates im Cursor, der Debugger sagt mir aber an der Stelle sinngemäß meine Datenbank wäre nicht offen für Edit. Das kann ja sein aber ich kenne mich leider nicht so gut aus. In Java gelang es mir, die gleiche (SQLite) Datenbank upzudaten. Ich hänge in der Anlage mal mein Projekt rein - bitte nicht schimpfen, ich bin kein Profi. Ich wäre auch an einer generellen Lösung interessiert, also ein Beispiel, wie man das macht. Ich glaube diese Art des Cursors mit Edit und Update kannte ich noch nicht und habe damals aufgegeben. In Java hatte ich glaube ich brav mit normalen SQL Update gearbeitet, weiß aber nicht mehr, ist jetzt gut 6 Jahre her und ich werde alt...
Dateianhänge
ZitateOnlineApplyUpdate.zip
(470.67 KiB) 44-mal heruntergeladen

MmVisual
Beiträge: 1445
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: Wie kann ich eine Datenbank über ein TGrid updaten?

Beitrag von MmVisual »

Es gibt die Komponente TDBGrid, diese ist diese zeigt direkt den Inhalt der Datenbank Tabelle.

TDBGrid wird mit TDataSource verbunden.

TDataSource mit dem Tabellen Objekt oder der Query und diese mit dem Connector.

So ziemlich ohne eigenen Code zu schreiben funktioniert das ganze schon.

Ein TGrid zu verwenden und das ganze "Updaten" manuell zu programmieren ist der völlig falsche Weg, Es sieht so aus als ob du große Teile von deinem Code einfach neu schreiben solltest und die Struktur umbauen so wie es sich die Entwickler von Datenbanken unter Lazarus gedacht haben.
EleLa - Elektronik Lagerverwaltung - www.elela.de

alfware17
Beiträge: 134
Registriert: Di 14. Dez 2010, 23:27

Re: Wie kann ich eine Datenbank über ein TGrid updaten?

Beitrag von alfware17 »

Mein Programm nutzt schon TDBGrid, wie ich gerade sehe, ich habe also ungenau geschrieben bzw gefragt. Die Anzeige über DataSource funktioniert ja auch schon, nur das mit dem Edit/Update... Hättest du ein lauffähiges Beispiel (mit dieser oder einer anderen Tabelle)

MmVisual
Beiträge: 1445
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: Wie kann ich eine Datenbank über ein TGrid updaten?

Beitrag von MmVisual »

Ich verwende immer die Zeos Komponente für die Datenbank.
Was du verwendet hast, ich habe es nicht raus gefunden.
Also habe ich mal deinen Code gelöscht.
Hier wie es eigentlich "richtig" und "Einfach" geht.
ZitateOnlineApplyUpdate2.zip
(2.5 MiB) 51-mal heruntergeladen
EleLa - Elektronik Lagerverwaltung - www.elela.de

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Wie kann ich eine Datenbank über ein TGrid updaten?

Beitrag von af0815 »

MmVisual hat geschrieben:
Fr 6. Jan 2023, 22:26
Ich verwende immer die Zeos Komponente für die Datenbank.
Was du verwendet hast, ich habe es nicht raus gefunden.
Es war übrigends offensichtlich SQLdb
SQLite3Conn, SQLDB,
Und ja, man könnte es so lösen. Aber es ist schwer den aktuellen Zustand der DB so zu steuern, vor allen weil man am RAD-System vorbei arbeitet. Zumindest was ich da gesehen habe. Ich würde entweder komplett RAD machen, dann auch die Query entsprechend alles machen lassen (dann aber auch die Insert, Update und Delete Statements richtig in der Query eintragen), oder alles zu Fuß machen. So hybride Geschichten haben gerne Pferdefüße.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

MmVisual
Beiträge: 1445
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: Wie kann ich eine Datenbank über ein TGrid updaten?

Beitrag von MmVisual »

Kann sein dass es diese SQLDB war.

Alles sehr komplex und von Hand programmiert, wo man doch die meisten Sachen super einfach über das Formular lösen kann.
Ich habe jetzt die ganze Verbindungen in das Formular gezogen, ich denke damit wird ihm das mit der Datenbank etwas besser verständlich.
Und den ganzen anderen Code gelöscht, damit das Beispiel minimal klein ist und es einen Lerneffekt gibt (hoffe ich zumindest).
EleLa - Elektronik Lagerverwaltung - www.elela.de

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Wie kann ich eine Datenbank über ein TGrid updaten?

Beitrag von af0815 »

MmVisual hat geschrieben:
Fr 6. Jan 2023, 23:20
Alles sehr komplex und von Hand programmiert, wo man doch die meisten Sachen super einfach über das Formular lösen kann.
Komplex nicht wirklich, aber man verliert gerne die Kontrolle, wenn man dann mit RAD (über das Formular) mixed. Damit greift man direkt in die Zustände ein und es geht gerne schief. Das hat jetzt nichts mit SQLdb oder ZEOS zu tun. ZEOS ist mal eine externe Komponnete und SQLdb in Lazarus direkt vorhanden. Was man verwendet ist mittlerweile Geschmackssache, nur sind die beiden Systeme nur bedingt kompatibel und man muss aufpassen bei einem Wechsel des Systems die Sache nicht zu verschlimmbessern.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

alfware17
Beiträge: 134
Registriert: Di 14. Dez 2010, 23:27

Re: Wie kann ich eine Datenbank über ein TGrid updaten?

Beitrag von alfware17 »

Hallo ich wollte gerade mal das Beispiel ausprobieren, leider sagt mir mein Lazarus
"zcomponent nicht gefunden" und ich soll im Projektinspektor nachsehen (da ist auch ein Ausrufezeichen).

Wie bekomme ich die entsprechende Ressource und wie in mein Projekt hinein? Sorry wenn ich so wenig weiß. Ich würde ja gerne den oder einen empfohlenen Weg gehen und notfalls (versuchen) meine andere in der Unit vorhandene DB-Verarbeitung zu integrieren, aber ich finde dieses zcomponent nicht. Hat es idealerweise eine ähnliche Query-Handhabung wie das Modul, welches ich benutzt habe (ausgesucht vor > 6 Jahren auch aufgrund eines Internet-Tips und weil ich irgendeine Query brauchte, die das gleiche machte, was man uns in Java gezeigt hat)

alfware17
Beiträge: 134
Registriert: Di 14. Dez 2010, 23:27

Re: Wie kann ich eine Datenbank über ein TGrid updaten?

Beitrag von alfware17 »

und an af0815: was habe ich denn bei sqldb vergessen bzw falsch gemacht? Gibt es da für die Query die gleichen Methoden?

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Wie kann ich eine Datenbank über ein TGrid updaten?

Beitrag von af0815 »

alfware17 hat geschrieben:
So 8. Jan 2023, 13:03
und an af0815: was habe ich denn bei sqldb vergessen bzw falsch gemacht? Gibt es da für die Query die gleichen Methoden?
Klare Antwort von Radio Eriwan: Im Prinzip ja.
Die Methoden sind ähnlich und auch die Vorgangsweise, die Namen sind etwas abweichend. Ich habe mir die Änderungen von MmVisual (noch) nicht angesehen, da ich aktuell Computer-Detox mache :-)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

MmVisual
Beiträge: 1445
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: Wie kann ich eine Datenbank über ein TGrid updaten?

Beitrag von MmVisual »

Das Zeos kann man von OPM laden.
Package > Online Package Manager ...
Dann nach Zeos suchen. Ich verwende die V7.14, noch nicht V8
EleLa - Elektronik Lagerverwaltung - www.elela.de

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Wie kann ich eine Datenbank über ein TGrid updaten?

Beitrag von af0815 »

MmVisual hat geschrieben:
So 8. Jan 2023, 17:54
Dann nach Zeos suchen. Ich verwende die V7.14, noch nicht V8
Warum nicht SQLdb nutzen, ist bei Lazarus dabei. Das ist wieder eine extra Abhängigkeit und bei der nächsten Frage, heisst es dann - deswegen werde ich mir nicht ZEOS installieren. Aber jeder wie er glaubt.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

MmVisual
Beiträge: 1445
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: Wie kann ich eine Datenbank über ein TGrid updaten?

Beitrag von MmVisual »

Es gibt bei Zeos so eine Kleinigkeit ...

TZQuery.SortedFields
TZQuery.SortType
TZQuery.Filter
TZQuery.Filtered

Gibt es so etwas vergleichbares in der SQLDB?
Ich hatte mal versucht ein größeres Projekt auf SQLDB um zu stellen, bin jedoch schlussendlich daran gescheitert.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Sieben
Beiträge: 202
Registriert: Mo 24. Aug 2020, 14:16
OS, Lazarus, FPC: Ubuntu Xenial 32, Lazarus 2.2.0, FPC 3.2.2
CPU-Target: i386

Re: Wie kann ich eine Datenbank über ein TGrid updaten?

Beitrag von Sieben »

Das gibt es alles auch bei SQLdb, sortieren geht auch asc und desc gemischt, was sich bei den Zeos-Properties eher nicht so anhört.

MmVisual
Beiträge: 1445
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: Wie kann ich eine Datenbank über ein TGrid updaten?

Beitrag von MmVisual »

Hm, wie sortiert man bei SQLdb ohne die Daten neu vom SQL Server ab zu fragen?
Ich habe das noch nicht gefunden.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Antworten