Entwickler-Ecke
Datenbanken - DBGrid speichern
Barzy2x - Fr 27.12.02 18:28
Titel: DBGrid speichern
Hallo,
in meinem Programm habe ich zwei DBGrids. Das erste ist über DataSource1 mit einer Tabelle verbunden, das zweite über DataSource2 mit Query1. In die Tabelle gibt man Termine ein, welche über Query1 durch eine SQL Anweisung (wenn diese Termine eintreten) im DBGrid2 angezeigt werden (durch Veränderung von DBGrid2 erscheint eine Meldung, dass ein Termin eingetreten ist). Bis dahin kein Problem...
Wenn ich das Programm jedoch schließe , wird der Inhalt des DBGrid2 gelöscht. Das bedeutet im Umkehrschluss, dass bei erneutem Aufruf des Programms die SQL Anweisung das DBGrid2 erneut füllt und eine erneute Terminerinnerung stattfindet. Gerade das möchte ich nicht.
Wie ist es möglich den Inhalt von DBGrid2 zu speichern, um ihn bei erneutem Aufruf der Programms zu laden? Versuche das ganze in eine INI Datei zu speichern. Jedoch habe ich bis jetzt keine Methode gefunden, mit der ich den Inhalt des DBGrid erfassen kann. Hat jemand eine Idee?
UGrohne - Fr 27.12.02 20:07
Auslesen ist eigentlich kein problem, die frage ist, ob das überhaupt nötig ist.
1.) Die Werte musst Du über das Query auslesen, meines Wissens nach gibt es keine Möglichkeit direkt auf die Daten des DBGrids zuzugreifen.
Also z.B. über Query1.FieldbyName('TerminBeschreibung').AsString kriegst Du den Wert des Felds Terminbeschreibung.
Aber ich würde Dir Möglichkeit 2 empfehlen:
2.) Du machst ein neues Feld in die Tabelle, vll. Gemeldet, und trägst dort ein, ob an einen Termin schon erinnert wurde. DIeses Feld nimmste dann eben in die Abfrage von Query1 rein und schon werden die Datensätze nicht mehr angezeigt. Das hätte auch noch den Vorteil, dass Du ganz einfach eine erneute Erinnerung einbauen könntest. z.B. indem Du das Feld Gemeldet das TimeStamp deklarierst.
Ich hoffe DU konntest mir folgen und das ganze entspricht auch Deinen Vorstellungen. (d.h. ich hoffe, ich hab dein prob richtig verstanden)
Gruß
Barzy2x - Fr 27.12.02 21:36
Die 2 Möglichkeit ist sicherlich effektiver. Da ich mich jedoch nicht wirklich mit Tabellen auskenne stellt sich mir folgende Frage. Wie kann ich in genau den Datensatz, der als Termin erkannt wurde in die Spalte 'Gemeldet' etwas automatisch hineinschreiben lassen?
UGrohne - Fr 27.12.02 22:02
Das is net so schwer, du nimmst einfach ein passendes Ereignis vom Query oder vom Grid (z.B. OnCellClick) und lässt darin dann Deinen Code zum Aktualisieren ausführen. Kanns jetzt nicht genau sagen, weil ich hier kein Delphi hab, aber ich beschreibs mal grob. Am einfachsten ist es, wenn Du alle angezeigten Datensätze des Queries aktualisierst: Du führst dann beim Anzeigen den SQLCode aus:
Quelltext
1:
| UPDATE termine SET Gemeldet='+QuotedStr(datetostr(date))+';' |
Wenn Du den aktuell markierten Datensatz aktualisieren willst nimmste am besten OnCellClick des DBGrids, beim Klicken wird da der aktuelle Datensatz markiert und Du führst den Code
Quelltext
1:
| UPDATE termine SET Gemeldet='+QuotedStr(datetostr(date))+' WHERE ID='+Query1.FieldByName('ID').AsString+';' |
aus.
Achtung, das oben muss höchstwahrscheinlich anders heißen, probiers einfach mal aus, kanns hier halt, wie gesagt, nicht nachprüfen.
Gruß
Barzy2x - Sa 28.12.02 17:00
Das funktioniert, danke...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!