![]() |
Refresh
Hallo,
habe ein DBGrid über einem Timer mache ich (1000) also jede 1 sec. ein refresh. Jetzt blink das Grid immer auf beim refresh! Wie kann ich dieses ändern! Gru? :-) |
AW: Refresh
Beim DataSet DisableControls und EnableControls
|
AW: Refresh
Hallo Sir Rufo
ich mache das so:
Delphi-Quellcode:
MyTable2.Refresh;
|
AW: Refresh
Ja dann mach das doch so ...
Delphi-Quellcode:
MyTable2 ist ja irgendwann mal von
MyTable2.DisableControls;
try MyTable2.Refresh; finally MyTable2.EnableControls; end; ![]() |
AW: Refresh
Ok, dass sieht gut aus!
Jetzt habe ich noch die Mausanzeige mit der Sanduhr und SQL Zeichen was blink! |
AW: Refresh
Das ist doch auch gut so, damit weiß der Benutzer, dass hier Daten geholt werden und er aktuell nichts machen kann (das Programm ist beschäftigt)
|
AW: Refresh
Ok,
dann werde ich die Zeit ändern! So sieht das aus als würde gleich das Programm abstürzen! :shock: |
AW: Refresh
Ansonsten musst du das Pferd eben anders aufzäumen und die Daten per Thread abholen.
Ein TClientDataSet hat die aktuellen Daten für die Anzeige. Der Thread holt die neuen Daten und übergibt diese (synchronisiert) and das TClientDataSet. Oder du nimmst eine TCollection und füllst diese vom Thread aus. Dann ist das DBGrid natürlich Geschichte ;) |
AW: Refresh
oder du probierst das einmal:
![]() und erzählst hinterher einmal, ob das (richtig) funktioniert. ;) ich will das auch seit ewigkeiten mal anschauen und testen. letztendlich läuft es in richtung object mapper. |
AW: Refresh
Moin... 8-)
[Mein Senf] Die Daten permanent zu pollen ist grundsätzlich keine gute Idee... :roll: Warum mußt du das überhaupt machen ? [/Mein Senf] |
AW: Refresh
Auch wenn es grundsätzlich keine gute Idee ist zu pollen, wenn die Datenbank aber keine entsprechende Möglichkeit der Benachrichtigung vorsieht, dann muss man halt pollen oder eine Zwischenschicht einschieben (wenn man alle Datenlieferanten umstellen kann)
|
AW: Refresh
Wenn es sich um keine Massenänderungen handelt, kann man über einen Trigger die Datensätze markieren, die verändert wurden, bzw. eine separate 'Changes'-Tabelle erstellen. Gepollt wird dann diese Tabelle und eine Heuristik kann entscheiden, wie und ob die Daten neu geladen werden.
|
AW: Refresh
Hallo,
gibt es noch eine andere Möglichkeit das DBGrid aktuell zu halten? Ich greife mit einem DBGrid auf eine mySQL DB zu. Zum Zeitpunk wo das Grid geöffnet wird werden auch alle Daten angezeigt. Kommen jetzt aber neue Daten dazu, sieht es schlecht aus? Ohne einen Refresh, ist das Grid nicht aktuell! Gibt es eine andere Möglichkeit das Grid aktuell zu halten? Refresh geht, aber das ganze Form zappelt! :-( Ich arbeite mitder Komponente myTable! Danke für die schnelle Hilfe ! |
AW: Refresh
Alle Möglichkeiten wurden genannt:
1. Regelmäßiges Neuladen der Daten 2. Wenn das RDBMS oder der (App-)Server Benachrichtigungen anbietet, diese verwenden 3. Triggergesteuerte Pflege einer Tabelle, die Änderungen der Daten protokolliert und Pollen dieser Tabelle. |
AW: Refresh
Architektur umstellen auf ein Ereignis-System über einen Message-Server.
Kurz: Änderungen an einen Datensatz, werden über eine MessageQue an das Persistenz-System bzw. Datenbank gemeldet. Diese Nachrichten, abbonierst du auch auf deinen Client und kannst dann die Datensätze einzeln aktualisieren (in der Oberfläche). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:12 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-2025 by Thomas Breitkreuz