Daten werden nicht übernommen

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Kuster Peter
Beiträge: 205
Registriert: So 2. Dez 2007, 20:47
OS, Lazarus, FPC: Windows XP Lazarus immer neueste Version
CPU-Target: xxBit
Wohnort: Schweiz

Daten werden nicht übernommen

Beitrag von Kuster Peter »

Hallo ich mache wahrscheinlich einen Anfängerfehler, doch ich komme nicht darauf.

Ich habe eine Firebird Datenbank mit einem TDBGrid verbunden und navigieren mit dem TDBNavigator.

Nun kann ich Daten erfassen und ändern und solange das Programm läuft, ist alles bestens. Doch sobald ich das Programm verlasse, sind die Aenderungen verschwunden.

Was mache ich falsch.

Peter

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Dazu müsste man erst mal wissen was du machst.
rufst überhaupt ApplyUpdates auf ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Kuster Peter
Beiträge: 205
Registriert: So 2. Dez 2007, 20:47
OS, Lazarus, FPC: Windows XP Lazarus immer neueste Version
CPU-Target: xxBit
Wohnort: Schweiz

Was ich mache

Beitrag von Kuster Peter »

Also ich habe einfach eine Firbird Datenbank mit einem Grid verbunden und navigiere mit dem Navigator. Klicke auf das + erfasse einen Datensatz, klicke auf Speichern. Alles bestens, die Daten sind da, doch sobald ich das PRG verlasse, sind die Daten weg.

Peter

EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von EugenE »

http://www.lazarusforum.de/viewtopic.php?t=1055" onclick="window.open(this.href);return false;

hatte das selbe problem nur mit MySQL | SQLite

versuchs mal ohne DBNavigator ;) und stell beim DBGrid AlwaysShowEditor auf true , sobald ich den navi gelöscht habe konnte ich die daten speichern

Kuster Peter
Beiträge: 205
Registriert: So 2. Dez 2007, 20:47
OS, Lazarus, FPC: Windows XP Lazarus immer neueste Version
CPU-Target: xxBit
Wohnort: Schweiz

Wo finde ichAlwaysShowEditor

Beitrag von Kuster Peter »

Wo finde ich das AlwaysShowEditor ?

Und ohni Navigator, wie navigiertst Du dann?

Peter

Kuster Peter
Beiträge: 205
Registriert: So 2. Dez 2007, 20:47
OS, Lazarus, FPC: Windows XP Lazarus immer neueste Version
CPU-Target: xxBit
Wohnort: Schweiz

Ergänzung

Beitrag von Kuster Peter »

Vielleicht hilft das weiter:

Ich habe nur die Datenbank verbunden und mit select * from die Tabelle angewählt. Sonst habe ich keine Einstellungen vorgenommen.

Was mache ich falsch oder was muss ich wo ergänzen.

Peter

knight
Beiträge: 802
Registriert: Mi 13. Sep 2006, 22:30

Beitrag von knight »

Select ist ein SQL Befehl zum Anzeigen von Daten. Damit kann man keine Daten in die Datenbank schreiben. Ich würde dir empfehlen, ersteinmal ein Tutorial oder Buch zum Thema SQL zu studieren.

knight

EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von EugenE »

Nur ein DBGrid drauf
beim Datasource die AutoEdit auf True
beim DBGrid:
AutoEdit = true
unter Options:
dgEditing = true
dbAlwaysShowEditor = true

im Query einfach SELECT * FROM tabelle;
und dann kannste einfach mit der Maus/Pfeiltasten durch die Datensätze Navigieren, sowie editieren, neue hinzufügen ,nur wie man dann daraus welche löscht habe ich selbst noch nicht eingebaut

also zumindest funktioniert es bei mir ^^

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Ohne auch nur einmal ApplyUpdates aufzurufen bleiben dann die Daten tatsächlich in den Tabellen ? Das sollte eigentlich nicht funktionieren.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von EugenE »

vllt geht das auch nur mit ZeosLib... habe es nicht mit anderen DB-Komponenten versucht^^

Kuster Peter
Beiträge: 205
Registriert: So 2. Dez 2007, 20:47
OS, Lazarus, FPC: Windows XP Lazarus immer neueste Version
CPU-Target: xxBit
Wohnort: Schweiz

Ev. Lösung

Beitrag von Kuster Peter »

Also wenn ich im On Close folgedede Befehle, die ich vom Alfred erhalten habe eingebe, dann geht es:

SQLQUERY1.UpdateMode := upWhereChanged;
SQLQUERY1.ApplyUpdates;
SQLTransaction1.Commit;
SQLQUERY1.close;
SQLQUERY1.SQL.TEXT := 'select * from test';
SQLQUERY1.Active := true;DBGRID1.SetFocus;

Kann man dies noch abkürzen?

Peter

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

ApplyUpdates sollte reichen
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Kuster Peter
Beiträge: 205
Registriert: So 2. Dez 2007, 20:47
OS, Lazarus, FPC: Windows XP Lazarus immer neueste Version
CPU-Target: xxBit
Wohnort: Schweiz

nein reicht nicht

Beitrag von Kuster Peter »

Leider reicht ApplyUpdates nicht. Nur die letzte Zeile kann man weglassen, sonst bricht alles zusammen.

Ich habe es nur mit SQLQUERY1.ApplyUpdates; und auch nur mit ApplyUpdates; versucht, geht beides nicht. Oder habe ich Dich falsch verstanden?

Peter

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

natürlich sqlquery.applyupdates. du solltest dich wirklich mal etwas mit der materie befassen programmieren ist nicht sinnloses zusammenkopieren von codeschnipseln von denen man nicht weiss was sie tun.

commit und applyupdates schliessen sich schonmal gegenseitig aus das ist ziemlicher schwachsinn
die Update methode must auch nicht jedesmal setzen und das refresh also close und open ka ob du das brauchst
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6766
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:

Beitrag von af0815 »

Christian hat geschrieben:du solltest dich wirklich mal etwas mit der materie befassen programmieren ist nicht sinnloses zusammenkopieren von codeschnipseln von denen man nicht weiss was sie tun.
In der LazInfo ist ein Beispiel für MySQL drinnen, das so eigntlich für jedes System fast läuft - nur die Verbindung ist auszutauschen. Der Code ist auch in den LazSnippets drinnen - so kann man sich das Ansehen. Vor allen ist es ein Beispiel, wie man Testdatensätze in größeren Mengen erzeugen kann, für Testläufe. Damit kann man sich etwas herumspielen.

Vor allen, wie schon Christian anmerkte, Langsam sich mit den Basics auseinandersetzen. Solange man nicht weis, was ein Commit ist, sollte man es nicht verwenden.

Übrigends impliziert ein ApplyUpdates ein automatisches Commit (Wenn der Programmier nicht vorher was händisch verbockt hat).
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten