SQLITE ZEOS DBGRID Daten nach insert anzeigen

Für Fragen von Einsteigern und Programmieranfängern...
lazEdgar
Beiträge: 17
Registriert: Do 27. Mär 2014, 14:46

SQLITE ZEOS DBGRID Daten nach insert anzeigen

Beitrag von lazEdgar »

Halochen an alle,
habe wieder Problem mit der Anzeige von Daten in einem DBGRID nach einem Insert von einem neuem Record.
Hatte schon vor eine Paar Tagen deshalb nachgefragt, da war das gleiche Problem mit den DB-Standardkomponenten.
Das gleiche Projekt versuche ich mit den ZEOS-Komponenten zu verwirklichen.
Langsam entwickelt sich das Lernen zur Selbstfolter.
Nach langem suchen rumspielen und raten habe ich dem ersten Projekt so geloest:
AfterDelete

Code: Alles auswählen

 
     SQLQuery2.UpdateMode := upWhereAll; // upWhereAll muss hier rein
     SQLQuery2.ApplyUpdates;            // Weil Kein SQLstatment eingetragen
     SQLTransaction1.CommitRetaining; 
 
bzw.
AfterPost

Code: Alles auswählen

 
     SQLQuery2.UpdateMode := upWhereChanged;
     SQLQuery2.ApplyUpdates;
     SQLTransaction1.CommitRetaining;
 
Mit der ZEOS-Komponente komme ich so nicht weiter, ok, Loeschen und Editieren mache ich ueber den DBNavigator, da sind diese Ergaenzungen nicht noetig, aber der benutzerdefinierte Insert haut mir die Daten aus DBGRID.

PS. habe viel im Net gesucht aber 0 passendes gefunden.
Syntax ???

Kann mir da jemand helfen

MfG
SG.Edgar

LAZ Debütant

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

Re: SQLITE ZEOS DBGRID Daten nach insert anzeigen

Beitrag von knight »

Wie informierst du DBGrid über den neuen Datensatz?

knight

lazEdgar
Beiträge: 17
Registriert: Do 27. Mär 2014, 14:46

Re: SQLITE ZEOS DBGRID Daten nach insert anzeigen

Beitrag von lazEdgar »

Mojensen,
knight hat geschrieben:Wie informierst du DBGrid über den neuen Datensatz?
Mit der Frage bin ich leicht ueberfordert ....
Ist das nicht genau das, was ich hier erfrage.
Eigentlich dachte ich, das nach einem Insert ein .ApplyUpdates der Zquery die Daten wieder nach DBGrid durchreicht....

MfG
SG.Edgar

LAZ Debütant

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

Re: SQLITE ZEOS DBGRID Daten nach insert anzeigen

Beitrag von knight »

Du machst eine Abfrage (SELECT...) und stellst das Ergebnis in DBGrid dar. Dann fügst du einen neuen Datensatz hinzu. Damit du den neuen Datensatz sehen kannst mußt du die Abfrage erneut ausführen. Das ist unabhängig davon, welche Komponenten du einsetzt.

knight

lazEdgar
Beiträge: 17
Registriert: Do 27. Mär 2014, 14:46

Re: SQLITE ZEOS DBGRID Daten nach insert anzeigen

Beitrag von lazEdgar »

Hallo Knight,
danke fuer deine Antwort, obwohl aber keine Ahnung ob ich damit weiter komme.
In meiner Unkenntnis gehe ich davon aus, das die Select Abfrage nach einem Update automatisch stattfindet zm. bei der ZQuery. Das SQL Statement ist in der ZQuery hinterlegt.
Bedeutet es etwa, dass die ZUpdateSQL zu hilfe genommen werde muss um dort ein erneutes Select einzutragen ?
Oder muss es wie in meinem ersten Projekt ablaufen ?
In dem gleichen Projekt mit der Lazarus "SQLQuery-Komponente" benutze/verwende ich tatsaechlich eine erneute Select-Abfrage
DBGrid2

Code: Alles auswählen

 
      id := DBGrid1.DataSource.DataSet.FieldByName('id').AsInteger; //Manuelle Master/Detail Beziehung
      SqlQuery2.SQL.text:= 'SELECT a.field1, a.field2 FROM field AS a WHERE a.id  ='+ IntToSTr(id); //Hier der Select des Slave Grids
      SQLQuery2.Open; 
 
Bzw. im DBGRID1

Code: Alles auswählen

 
      SQLQuery1.SQL.Text := 'SELECT * FROM table ORDER BY field ASC'; 
      SQLQuery1.Open;
 
Ich dachte jetzt, diese manuellen Abfragen entfallen bei der ZQuery.
Auch die Master/Detail Beziehung kann direkt im Objektinspektor eingestellt werden.
ManOman ist aber ganz schoen Komplex, das Thema.

Nachtrag: die hier aufgefuehrte Abfrage funktioniert aber nicht in Verbindung mit der Zquery .....

MfG
SG.Edgar

LAZ Debütant

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: SQLITE ZEOS DBGRID Daten nach insert anzeigen

Beitrag von hde »

lazEdgar hat geschrieben:ManOman ist aber ganz schoen Komplex, das Thema.
was erwartest du? Egal welche Komponenten du einsetzt, ein wenig denken kann nicht schaden, und wissen was wo und warum passiert auch nicht.

Dein zweites Beispiel hat mit dem ersten gar nicht gemeinsam. Ob du das da so machen musst, kann ich ohne mehr zu wissen nicht beurteilen.

Aber grundssätzlich:
Du machst einen Select, liest Daten aus einer Datenbank und schiebst das Ergebinis in ein DBGrid. Dann schiebst du weitere daten in die Datenbank, wahrscheinlich uf einem anderen Rechner/Server. Und dann ..
knight hat geschrieben:Wie informierst du DBGrid über den neuen Datensatz?
hde

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: SQLITE ZEOS DBGRID Daten nach insert anzeigen

Beitrag von hde »

Nachtrag, weil ich's jetzt erst wirklich lese:
lazEdgar hat geschrieben: Mit der ZEOS-Komponente komme ich so nicht weiter, ok, Loeschen und Editieren mache ich ueber den DBNavigator, da sind diese Ergaenzungen nicht noetig, aber der benutzerdefinierte Insert haut mir die Daten aus DBGRID.
Was heißt denn das ????

lazEdgar
Beiträge: 17
Registriert: Do 27. Mär 2014, 14:46

Re: SQLITE ZEOS DBGRID Daten nach insert anzeigen

Beitrag von lazEdgar »

hde hat geschrieben:Dann schiebst du weitere daten in die Datenbank.Und dann ..
Und dann muss ich mich hier ins Forum wagen und hier die Frage Stellen: SQLITE ZEOS DBGRID Daten nach insert anzeigen !!!
hde hat geschrieben:Was heißt denn das ????
Nutze ich den DBNAvigator fuer den Insert, sind die Daten nach dem Insert sichtbar.
Mache ich es manuell zB. ueber eine procedure ButtonClick komme ich an das Refresh der Daten nicht dran.
hde hat geschrieben:was erwartest du? Egal welche Komponenten du einsetzt, ein wenig denken kann nicht schaden, und wissen was wo und warum passiert auch nicht.
Eben durch die Koplexitaet von Pascal/Lazarus gibt es verschiedene Ansaetze bei den Loesungen von Aufgaben und das gleiche hat man bei der Durcharbeitung von Tutorials.
Da kommt man schon sehr leicht durcheinader und man muss nicht unbedingt alles verstehen koennen, besonders wenn viele unterschiedliche Ansaetze gezeigt werden.
Es reichen schon 5 Befehle die miteinander kombiniert werden koennen und man hat 120 moegliche Vollkombinationen.
SG.Edgar

LAZ Debütant

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: SQLITE ZEOS DBGRID Daten nach insert anzeigen

Beitrag von Michl »

Generell ist es eigentlich erstmal nicht so wichtig, welche Komponente Du benutzt, ob SQLdb oder Zeos, funktionieren tun beide. Ich würde Dir empfehlen, das für Dich am leichtesten verständliche Tutorial herauszusuchen und durchzuarbeiten. Wenn Du an einer Stelle in einem Tutorial nicht weiter kommst, kannst Du Dich dann auf diese Stelle beziehen und kongrete Fragen stellen, ansonsten ist es schwierig Dir einen guten Tipp zu geben, da niemand wirklich weiss, wo Du den Hund vergraben hast (das geht aus Deinen bisherigen Fragen/Antworten nicht wirklich hervor).

Alternativ kannst Du auch ein Minimalbeispiel erstellen und das Projekt als Zip hier hochladen, dann hätte man evtl. auch noch eine Chance Dir einen Rat zu geben.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

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:

Re: SQLITE ZEOS DBGRID Daten nach insert anzeigen

Beitrag von Christian »

Wenn du über Zeos das Insert machst also mit
DataSet.Insert
DataSet.FieldBName('Feld').AssString := 'wasauchimmer';
DataSet.Post;

ist das Grid automatisch mitaktualisiert.
Nur wenn du das per SQL direkt an den Server schickst hast du dein problem.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: SQLITE ZEOS DBGRID Daten nach insert anzeigen

Beitrag von hde »

lazEdgar hat geschrieben:man muss nicht unbedingt alles verstehen koennen
Doch, das sollte man unbedingt schon. Sonst nenn es nicht Programmieren sondern Basteln. Und dies ist kein Forum für Bastler.
Wenn du nicht weißt, was die Komponenten tun und welche Arbeit sie dir abnehmen, (die du sonst alle programmieren müsstest) kannst du sie auch nicht sinnvoll einsetzen.
Die Lazarus-Komponenten und Zeos funktionieren sehr ähnlich, nur unter der Oberfläche gehen sie andere Wege, für dich uninteressant. Es ist egal welche du nimmst.
Aber alle Tutorien setzen Grundwissen voraus, dass du offenbar nicht hast. Lerne erst mal etwas über Datenbanken an sich, und erst dann setze sie ein.
oder ...
Michl hat geschrieben:Alternativ kannst Du auch ein Minimalbeispiel erstellen und das Projekt als Zip hier hochladen, dann hätte man evtl. auch noch eine Chance Dir einen Rat zu geben.

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: SQLITE ZEOS DBGRID Daten nach insert anzeigen

Beitrag von hde »

lazEdgar hat geschrieben:Nutze ich den DBNAvigator fuer den Insert, sind die Daten nach dem Insert sichtbar.
Mache ich es manuell zB. ueber eine procedure ButtonClick komme ich an das Refresh der Daten nicht dran.
Du machst dann was falsch, weil du die Funktionsweise der einzelnen Komponenten nicht kennst oder nicht begreifst. Mach ein Minimalbeispie und zipp's,nur dann kann man sehen was du falsch machst.
lazEdgar hat geschrieben:Eben durch die Koplexitaet von Pascal/Lazarus
Wenn dir fpc/Lazarus schon komplex vorkommt, dann programmier mal eine echte Datenbankanwendung in Java, C oder C++ ohne RAD.
fpc/Lazarus vereinfacht eine solche Anwendung radikal, nur minimales Grundwissen braucht man schon.

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: SQLITE ZEOS DBGRID Daten nach insert anzeigen

Beitrag von Socke »

hde hat geschrieben:
lazEdgar hat geschrieben:Eben durch die Koplexitaet von Pascal/Lazarus
Wenn dir fpc/Lazarus schon komplex vorkommt, dann programmier mal eine echte Datenbankanwendung in Java, C oder C++ ohne RAD.
fpc/Lazarus vereinfacht eine solche Anwendung radikal, nur minimales Grundwissen braucht man schon.
Ich finde es einfacher, eine SQLite-Datenbank direkt anzusprechen anstatt die Datenbankkomponenten zu verwenden. Die geforderten Datenbankgrundlagen sind bei mir (so denke ich) ausreichend vorhanden, jedoch finde ich das Konzept der Komponenten bei weitem nicht so intuitiv, dass sie einfach zu verwenden wären.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

lazEdgar
Beiträge: 17
Registriert: Do 27. Mär 2014, 14:46

Re: SQLITE ZEOS DBGRID Daten nach insert anzeigen

Beitrag von lazEdgar »

Hallo an Alle und danke an ALLE,
habe mir heute ein Paar Wege von den Vielen zeigen lassen, wie es gemacht werden kann.
Sehr ansprechend und sprechend finde ich diese Moeglichkeit des Inserts, bzw. Appends.
fields.JPG
fields.JPG (14.64 KiB) 2731 mal betrachtet
>

Code: Alles auswählen

      ZQuery2.Append;
      ZQuery2datum.AsString := DateToStr(Date);
      ZQuery2notiz.AsString := MeinWert;
      ZQuery2id.AsInteger := ID_MASTER;
>
Jooo, sorry fuer die schlechte Beschreibung meiner Unwissenheit.
SG.Edgar

LAZ Debütant

Soner
Beiträge: 726
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: SQLITE ZEOS DBGRID Daten nach insert anzeigen

Beitrag von Soner »

Ich habe das Thema schnell überflogen deshalb mein Antwort auf dein Problem vom Anfang.
1. Wenn die Query von DBGrid Auswahl hat (where...) und die neuen Daten nicht in die Auswahl passen, dann verschwinden die nach dem hinzufügen, das ist normal.
2) Wenn du die Daten mit ander Controls hinzugefügt hast, dann muss man Query1.Refresh ausführen, wobei Query1 das von DbGrid ist.

Antworten