Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Mehrere ZQuerys (https://www.delphipraxis.net/112849-mehrere-zquerys.html)

MaxMara 28. Apr 2008 11:46

Datenbank: MySQL • Version: 5.1 • Zugriff über: ZeosLib

Mehrere ZQuerys
 
Hallo!
Habe (wiedermal) zwei kleine Fragen. Diesmal wegen der ZQuery-Komponente:
1.) Ich möchte mehrere SQLs per onTimer-Event ausführen.
Wie geht man hier am besten vor? Erstellt man mehrere ZQuerys und weist man jedem davon ein SQL fix zu, oder löscht man das SQL per SQL.Clear raus und schreibt dann das andere hinein?
2.) Wenn ich das Query per ZQuery1.Open öffne und Daten ändern sich inzwischen in der DB - kann ich auf diese dann gleich zugreifen?

Hoffe meine Fragestellung ist nicht zu verwirrend. :)

Danke und grüße
Christian

mkinzler 28. Apr 2008 11:48

Re: Mehrere ZQuerys
 
Wenn die selben Abfragen öfters verwendet werden, würde ich eigene Komponenten verwenden.

MaxMara 28. Apr 2008 11:56

Re: Mehrere ZQuerys
 
Danke mkinzler!
Die zweite Antwort habe ich gerade 'ergooglet': Ich muss (anscheined) mit ZQuery1.Refresh; die Daten aktualisieren.
Stimmt das?

mkinzler 28. Apr 2008 12:15

Re: Mehrere ZQuerys
 
Kommt zusätzlich auch noch auf das DBMS und de Transaktionseinstellungen (wenn vom DBMS unterstützt) an.

MaxMara 28. Apr 2008 12:56

Re: Mehrere ZQuerys
 
in meinem Fall wäre das MySQL mit MyISAM als Storageengine. Also keine Transaktionen.

RavenIV 28. Apr 2008 13:01

Re: Mehrere ZQuerys
 
Du nimmst ein TDataModule und knallst dort 4 oder 20 ZQuerys drauf.
Dann gibts Du jedem Query einen anständigen Namen (Query1 bis Query20 sind keine Namen).
Nun kannst Du jedem Query ein SQL geben und die Daten halten, solange Du sie brauchst.

MaxMara 28. Apr 2008 13:06

Re: Mehrere ZQuerys
 
Danke für den Tipp - werd ich ausprobieren.

Zitat:

Zitat von RavenIV
Nun kannst Du jedem Query ein SQL geben und die Daten halten, solange Du sie brauchst.

Nur werden die Daten von einem anderen Prozess dauernd geändert. Das heisst es kommen laufend mehr Datensätze hinzu.
Wenn ich die Querys offen lasse, werden sie nicht aktualisiert, oder?

hoika 29. Apr 2008 07:04

Re: Mehrere ZQuerys
 
Hallo,

das Verhalten ist normal (und auch so gewollt).
Ein Query zeigt die Daten an,
die zum Zeitpunkt des Query.Open in der Tabelle (dem SQL-Statement) sind.

Abhilfe schafft hier Close; Open; oder auch Refresh.

Zu der Frage mit den SQL.Clear;
Ich mache das genau so.
Warum soll ich für jedes Statement eine eigene Query benutzen ?

Ausnahme:
Die Query wird oft aufgerufen und ist parametrisiert (prepared query).
Zeos prepared die Query ja selber.
Prepare bringt (unter Firebird) ungefähr Faktor 2 Geschwindigkeit mehr.
Kommt aber immer auf den Kontext das Aufrufes an.

Heiko

MaxMara 29. Apr 2008 07:48

Re: Mehrere ZQuerys
 
Danke Hoika,
meine Frage ist nun beantwortet.
Ich werde - weil es eigentlich nur 2 Querys sind - für jedes eine ZQuery verwenden, da es um einiges weniger an Arbeit ist und ich von der Performance her auch keine Probleme feststellen konnte.

Grüße
Christian


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz