AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Inhalt einer Datenbanktabelle in GUI aktuell halten
Thema durchsuchen
Ansicht
Themen-Optionen

Inhalt einer Datenbanktabelle in GUI aktuell halten

Ein Thema von Computerbabalulu · begonnen am 9. Jan 2012 · letzter Beitrag vom 10. Jan 2012
Antwort Antwort
Iwo Asnet

Registriert seit: 11. Jun 2011
313 Beiträge
 
#1

AW: Inhalt einer Datenbanktabelle in GUI aktuell halten

  Alt 9. Jan 2012, 15:56
Schreib in der DB einfach irgendwo hin (z.B. über einen Trigger, kann das MySQL überhaupt?), wenn sich Daten verändert haben.

Anstatt präventiv alle Daten neu zu laden, schaust Du zunerst nur auf diesen Eintrag. Nur wenn dort drin steht "Hat sich geändert", lädst Du entweder alle Daten neu oder nur die, die sich geändert haben.

Oder du verschickst TCP-Nachrichten, wenn sich was ändert.
  Mit Zitat antworten Zitat
Benutzerbild von Computerbabalulu
Computerbabalulu

Registriert seit: 26. Sep 2003
233 Beiträge
 
#2

AW: Inhalt einer Datenbanktabelle in GUI aktuell halten

  Alt 9. Jan 2012, 16:13
Ja, Trigger kann MySQL. Aber ob ich über einen Trigger aus MySQL heraus via TCP/IP eine Nachricht an die Gui Application
schicken kann, glaube ich nicht. Aber ich Google mal nach. Einen Outfile kann man mit einem Trigger jedenfalls erstellen,
aber dann müsste ich auch wieder ständig nach diesem File triggern...
Frank
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#3

AW: Inhalt einer Datenbanktabelle in GUI aktuell halten

  Alt 9. Jan 2012, 16:29
Was Iwo wohl eher meinte, Du machst Dir eine temporäre Tabelle. In eine Spalte schreibst Du rein, dass sich in Tabelle xy etwas geändert hat oder nicht. Steht jetzt drin : Geändert Tabelle XY, dann lädst Du die entsprechende Tabelle neu.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Computerbabalulu
Computerbabalulu

Registriert seit: 26. Sep 2003
233 Beiträge
 
#4

AW: Inhalt einer Datenbanktabelle in GUI aktuell halten

  Alt 9. Jan 2012, 16:34
Hallo ihr beiden

Danke für die Infos!
Ich denke so werde ich es machen...

Schönen Abend
liebe Grüße
Baba
Frank
  Mit Zitat antworten Zitat
neo4a

Registriert seit: 22. Jan 2007
Ort: Ingolstadt
362 Beiträge
 
Delphi XE2 Architect
 
#5

AW: Inhalt einer Datenbanktabelle in GUI aktuell halten

  Alt 9. Jan 2012, 16:42
Jetzt zu meiner Frage... Macht das überhaut Sinn so, oder gibt es bessere Lösungen? Ich bin da in SQL nicht so fit...
Vielleicht ist das nicht nur ein SQL-Problem. Im SVN vom VirtualTreeView gibt es unter Demos\Objects ein MVC-Sample von Marian Aldenhövel, der einen anderen, wenn auch nicht ganz trivialen Ansatz zeigt. Den kann man nun so modifizieren, dass man direkt mit DB-Abfragen und -Werten arbeitet, ohne die Ergebnisse komplett irgendwo in einer Struktur zwischen zu speichern. Die Kernfunktionalität findet hier statt.

Delphi-Quellcode:
  protected
    procedure DoInitChildren(Node:PVirtualNode;var ChildCount:Cardinal); override;
    procedure DoInitNode(aParent,aNode:PVirtualNode; var aInitStates:TVirtualNodeInitStates); override;
Damit ruft der VTV nur noch die Daten ab, die aktuell angezeigt werden, was den TreeView- Aufbau extrem beschleunigen kann. Die anderen Hinweise zum Triggern von Änderungen in der DB gelten natürlich trotzdem.

BTW, ändere diese Funktion in der Demo, damit es in D2009ff keine AV's gibt bzw. auch etwas angezeigt wird:

Delphi-Quellcode:
function TMVCTreeView.InternalData(Node: PVirtualNode): Pointer;
begin
  if (Node = RootNode) or (Node = nil) then
    Result := nil
  else
    Result := PAnsiChar(Node) + FInternalDataOffset;
end;
Andreas
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#6

AW: Inhalt einer Datenbanktabelle in GUI aktuell halten

  Alt 9. Jan 2012, 18:57
Müßte ich in Firebird eine zeitnahe Aktualisierung der Anzeige bei einer Datenänderung ohne Polling machen müssen, dann würden sich die in PSQL und somit in Triggern vorhandenen asynchronen Events anbieten. D.h. bei einer Datenänderung feuert der Trigger der wiederum den Event auslöst der von "interessierten" Clients empfangen wird und dann im Client eine entsprechende Programmlogik ausführt. Keine Ahnung ob MySQL etwas in Richtung asynchrone Events anbietet.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:43 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