AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Hilfe zu VirtualTreeview Rootnodecount

Ein Thema von Assertor · begonnen am 8. Nov 2007 · letzter Beitrag vom 8. Nov 2007
Antwort Antwort
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#1

Hilfe zu VirtualTreeview Rootnodecount

  Alt 8. Nov 2007, 12:56
Hi,

ich brauch mal kurz etwas Schützenhilfe, stehe etwas auf dem Schlauch beim VST.

Ich muß ein VST "Live" updaten. Ich erhalte von meinem DBMS immer die aktuelle Anzahl Record (RecordCount). Die DB wird extern geändert, also kann ich keine DB-Events nutzen.

Wie kann ich nun einfach das VST RootNodeCount gegen RecordCount prüfen und das VST -effektiv- updaten. Sprich wenn ich vorher 10000 records hatte und nun 12000, daß er nur die 2000 zufügt bzw. Initialisiert?

Derzeit aktualisiere ich per:
Delphi-Quellcode:
  vstMainGrid.BeginUpdate;
  // vstMainGrid.Clear; // geht auch ohne...
  vstMainGrid.RootNodeCount := GUIMainTable.RecordCount;
  vstMainGrid.SortTree(vstMainGrid.Header.SortColumn, vstMainGrid.Header.SortDirection, True);
  vstMainGrid.EndUpdate;
Hier habe ich das Problem, daß bei jedem -ersten- Update ein Eintrag im VST doppelt ist. In der DB ist alles ok.

Wie macht ihr ein Live-Update des VST? Jetzt liegt alles in einem Timer der RootNodeCount <> RecordCount prüft.
Nicht schön (wg. Timer), aber es geht bis auf den doppelten Eintrag.

Gruß winkel79

[edit]Kürzer, Verständler, Besser: Thread 2.0[/edit]
Frederik
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#2

Re: Hilfe zu VirtualTreeview Rootnodecount

  Alt 8. Nov 2007, 15:53
Bin gerade dabei ein Applicationserver zu schreiben, welcher auf einen Client einen VST aktuallisieren muss. (datenändern, hinzufügen und löschen)

Der Server erzeugt von seinen Daten eine Art Diff.
Dieses schickt er zum Client.
Der Client durchläuft dann jeden Diffdatensatz, versucht dabei einen Knoten mit der gleich ID zu finden.
Dann ändert er die Daten oder löscht den Knoten.
Ist kein Knoten da, ist es ein neuer Datensatz.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#3

Re: Hilfe zu VirtualTreeview Rootnodecount

  Alt 8. Nov 2007, 16:05
Hallo generic,

danke für die Antwort.

Zitat von generic:
Bin gerade dabei ein Applicationserver zu schreiben, welcher auf einen Client einen VST aktuallisieren muss. (datenändern, hinzufügen und löschen)
Soweit, etwa gleiche Vorgaben.

Zitat von generic:
Der Server erzeugt von seinen Daten eine Art Diff.
Dieses schickt er zum Client.
Der Client durchläuft dann jeden Diffdatensatz, versucht dabei einen Knoten mit der gleich ID zu finden.
Dann ändert er die Daten oder löscht den Knoten.
Ist kein Knoten da, ist es ein neuer Datensatz.
Das brauche ich nicht. Die Daten kommen sequentiell, d.h. kenne ich die aktuelle RecordCount Größe, weiß ich, welche fehlen.

Ich teste gerade einen anderen Lösungsansatz, bekomme aber hier mit dem OnInitNode Probleme.

Wie kann man das anders machen:
Delphi-Quellcode:
var
  Data: PMyData;
begin
  inherited;
  Data := Sender.GetNodeData(Node);
  Initialize(Data^);
  Data.ID := MeineTabelle.FieldByName('MeineID').AsInteger;
  Data.Text := MeineTabelle.FieldByName('MeinText').AsWideString;
  if not MeineTabelle.Eof then // <- das möchte ich ablösen
    MeineTabelle.Next; // <- "" - ""
end;
Ich habe versucht, einfach MeineTabelle.RecNo auf Node.Index zu setzen (mit Größenprüfung) und Eof/Next wegzulassen. Dann erhalte ich bei Vergrößerung des RootNodeCount von z.B. 2000 auf 2500 aber nur gleiche Werte von 2001 bis 2500.

Ideen? Ich habe schon im VTV Tut, den DB Beispielen (Extensive und Basic), den Yahoo Archiven und bei DP gesucht. Aber diesen Ansatz scheint keiner vorher mal gemacht zu haben...

Gruß winkel79
Frederik
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#4

Re: Hilfe zu VirtualTreeview Rootnodecount

  Alt 8. Nov 2007, 16:55
So, selbst gelöst...

Einfach das OnInitNode wie beschrieben angepasst. Statt Eof/Next auf den selected Record und mit RangeCheck. Dazu das Clear vom VST weg und es rennt sehr schnell.

Trotzdem danke.

Gruß winkel79
Frederik
  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 04:47 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