![]() |
Datenbank: mariadb • Version: ??? • Zugriff über: mydac
Problem mit myQuery
hallo, versuche mit myQuery1 u. myQuery2 zu prüfen, ob die Anzahl der Datensätze ungleich sind.
Code:
hier mein Timer:
Code: myQuery 1 und 2
SELECT ts_number.id FROM ts_number WHERE ts_number.id = 2
Code:
das Ergebnis im Memo1 sieht so aus:
procedure TForm1.RefreshTimer(Sender: TObject);
var zahl1, zahl2 : Integer; begin MyQuery1.Refresh; zahl1 := MyQuery1.RecordCount; if zahl1 <> zahl2 then begin MyQuery2.Refresh; zahl2 := MyQuery2.RecordCount; Memo1.Lines.Add ('Status: ' + datetostr(date) + ' | ' + timetostr(time) + Format(' : Refresh Query RecordCount: %d',[MyQuery2.RecordCount])); end; end; Server 1.0 Status: 28.10.2022 | 11:00:29 : Server MySQL gestartet Status: 28.10.2022 | 11:00:29 : Anzahl Datensätze: 555 Status: 28.10.2022 | 11:00:35 : Refresh Query RecordCount: 555 Status: 28.10.2022 | 11:01:23 : Refresh Query RecordCount: 555 Status: 28.10.2022 | 11:01:29 : Refresh Query RecordCount: 555 Status: 28.10.2022 | 11:01:35 : Refresh Query RecordCount: 555 Status: 28.10.2022 | 11:01:41 : Refresh Query RecordCount: 556 Status: 28.10.2022 | 11:01:53 : Refresh Query RecordCount: 556 Status: 28.10.2022 | 11:02:11 : Refresh Query RecordCount: 556 Status: 28.10.2022 | 11:02:14 : Server MySQL gestoppt Warum wird die Anzahl der Datensätze nicht sofort geändert ? Timer steht auf 6 Sekunden |
AW: Problem mit myQuery
Warum hörst du nicht auf das, was dir dein Compiler bestimmt zu sagen versucht?
Zitat:
und da lokale Variablen nicht (alle) automatisch initialisiert werden, steht darin ein Zufallswert. Außerdem, du willst nur sie Anzahl wissen, aber lädst gleich alles runter? Ein bisschen unnötig viel Traffic und Speicher. :angle:
SQL-Code:
SELECT count(ts_number.id) FROM ts_number WHERE ts_number.id = 2
Delphi-Quellcode:
bzw.
MyQuery2.FieldByName('count').AsInteger
Delphi-Quellcode:
MyQuery2.Fields[0].AsInteger
|
AW: Problem mit myQuery
Liste der Anhänge anzeigen (Anzahl: 1)
guten morgen,
habe eine query(count), wie frage ich jetzt die Anzahl der Datensätze ab?
Delphi-Quellcode:
procedure TForm1.pruefenTimer(Sender: TObject);
var anzahl: integer; begin anzahl:= count.FieldByName('id').AsInteger; // das ist falsch Label2.Caption := 'Anzahl Datensätze : '+ InttoStr(anzahl); end; |
AW: Problem mit myQuery
ach ja,
habe nicht alles gelesen :-) hiermit geht es :
Delphi-Quellcode:
MyQuery2.Fields[0].AsInteger;
|
AW: Problem mit myQuery
wird trotzdem nur einmal ausgelesen (timer) ?
Delphi-Quellcode:
procedure TForm1.pruefenTimer(Sender: TObject);
var anzahl: integer; begin if anzahl <> count.Fields[0].AsInteger then begin anzahl:= count.Fields[0].AsInteger; Label2.Caption := 'Anzahl Datensätze : '+ InttoStr(anzahl); end end; |
AW: Problem mit myQuery
Wo führst Du denn Deine Query aus? Im Timer ja augenscheinlich nicht, wie soll man da also Änderungen mitbekommen?
|
AW: Problem mit myQuery
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Delphi-Quellcode:
count ist meine Query
if anzahl <> count.Fields[0].AsInteger then
|
AW: Problem mit myQuery
Schön. Die wird einmal ausgeführt und enthält dann die Anzahl der Datensätze zum Zeitpunkt der Ausführung. Solange Du sie nicht erneut ausführst, wird sich diese Anzahl aber niemals ändern.
|
AW: Problem mit myQuery
Zitat:
|
AW: Problem mit myQuery
"anzahl" ist lokal deklariert. Der Vergleich (if) wird also immer mit einer nicht initialisierten Variablen gemacht. Der Vergleich wird daher eher zufällige Ergebnisse liefern und dein Label auch nur zufällig aktualisiert.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz