Hallo zusammen,
ich brauche mal einen Denkanstoß.
Ich habe eine Tabelle in der ich variable Zeiträume speicher (Datum von/Bis) und auf die ich mehrmals im System darauf Zugreife um die jeweilige ID des Zeitraumes zu ermitteln. Hier bei bin ich auf die Idee gekommen, bei Systemstart eine FDQuery abzusetzen und diesen im Speicher offen zu lassen, bis ich entweder Refreshe oder das System beende.
Ich Frage mich, ob mehrere Verbindungen zur Datenbank offen zu halten, eine sinnvolle Option ist oder ob dafür eine andere Möglichkeit gibt.
Wie gestaltet es sich, wenn ein anderer User neue Einträge hinzufügt, wie bekommt der Client diese Aktualisierung mit?
Vielen Dank
Eppos
Über eine Verbindung kann man dutzende von Tabellen und / oder Querys öffnen und mit ihnen arbeiten. Die Frage nach mehreren offenen Verbindungen stellt sich daher nicht. Und selbst wenn: Natürlich kann man mehrere offenen Verbindungen in 'nem Programm haben, egal ob die alle zur gleichen Datenbank gehen oder zu verschiedenen Datenbanken, auch unterschiedlichster Datenbanktypen auf einem oder mehreren Servern.
Die Frage die sich für mich stellt ist: Du willst eine ID haben. Ist die immer gleich oder ändert die sich mit jedem Neuerstellen der Abfrage?
Ist die Ergebnismenge der Abfrage immer gleich, dann leg dir 'ne entsprechende Tabelle in der Datenbank an und greife darauf zu, anstatt bei jedem Programmstart immerwieder die gleiche Ergebnismenge zur Verarbeitung zu erstellen und für die Programmlaufzeit vorzuhalten.
Und 'ne
Query kann man beim Porgrammstart öffnen und bis zum Programmende geöffnet halten. Wenn die Menge der Daten nicht exorbitant hoch ist, also in den Arbeitsspeicher passt (ohne andere Programm negativ zu beeinflussen) dann hast Du damit letztlich eh schon 'ne Memorytable, mit entsprechend kurzen Zugriffzeiten. Zumindest klappt das bei mir mit meinem ollen Delphi 7 und Firebird 3 hervorragend. Gezielte Abfragen per
SQL auf konkrete Daten (was bei dem Suchen einer ID für ein Zeitinterval ja wohl gegeben sein dürfte) gehen so schnell, dass man das eigentlich nicht merkt.