AGB  ·  Datenschutz  ·  Impressum  







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

Daten schnell in VST laden

Ein Thema von youuu · begonnen am 14. Sep 2010 · letzter Beitrag vom 15. Sep 2010
Antwort Antwort
Seite 1 von 2  1 2      
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#1

Daten schnell in VST laden

  Alt 14. Sep 2010, 22:09
Datenbank: mysql • Version: 5.x • Zugriff über: devart
Hi,

wie lade ich am schnellsten mehrere 1.000 Daten in ein VST?
Momentan mach ich es über (gekürzt):
Delphi-Quellcode:
    liste.test1:= Query.FieldByName('test1').AsWideString;
    Vst.addchild(nil, liste);
Jedoch dauert diese Art extrem lange.
Steven
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#2

AW: Daten schnell in VST laden

  Alt 14. Sep 2010, 22:39
Vst.RootNodeCount := 10000; und dann im OnGetText-Event den passenden Text rausgeben. Das wäre eine Möglichkeit.
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Daten schnell in VST laden

  Alt 14. Sep 2010, 22:56
Ja, denke wie bei jedem WinControl (z.B. auch StringGrid) bei größeren Datenmengen nichts in das Control laden sondern nur den sichbaren Abschnitt aus der externen Datenquelle laden und bereit stellen.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: Daten schnell in VST laden

  Alt 15. Sep 2010, 00:47
Was soll der Benutzer mit tausend Datensätzen anfangen? Ich wäre da ziemlich überfordert, wenn ich die alle durchsehen müsste, um meine gewünschte Information zu bekommen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#5

AW: Daten schnell in VST laden

  Alt 15. Sep 2010, 01:23
Das ist natürlich wahr, aber eben eine der Stärken des VST

Die Frage ist auch noch, falls das hier youuu alles nicht so weiterhilft, wie er den Baum befüllt. Von welchem Typ ist das Objekt "liste"? Meine Zeit mit den DB-Komponenten ist lange vorbei... Macht er erst eine Query, iteriert dann über das Ergebnis und fügt jedes Node einzeln hinzu? Der Fehler wird vermutlich sein, dass das virtuelle Paradigma, oder wie man das nennt, hier nicht befolgt wurde. Selbst ein simples VST.Add() geht glaube ich noch recht schnell, auch wenn man es sehr sehr oft hintereinander aufruft. Das RootNodeCount ist aber der bessere Weg, denke ich.

Ich würde es mal so versuchen:
Query machen, Ergebnis irgendwo merken, RootNodeCount auf die Anzahl der Zeilen im Ergebnis setzen. Im OnGetText-Ereignis dann auf das gecachete Query-Ergebnis zugreifen und den passenden Text rausrücken. Dabei könnte man zum Beispiel den Index des Nodes, für welches OnGetText aufgerufen wird, benutzen, um die passenden Daten aus der Ergebnismenge herauszufischen.

Falls das auch noch nicht reicht.. etwas mehr Code, bitte .. und Entschuldigung für meine sehr knappe Antwort von vorhin. Ich musste weg, aber musste trotzdem noch antworten, war so ein innerer Zwang.

Gute Nacht.
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#6

AW: Daten schnell in VST laden

  Alt 15. Sep 2010, 08:17
Morgen, bin gestern eingepennt

Also, ich mach ein Query auf die DB, fülle die Klasse Liste und pack es in das VST.

Delphi-Quellcode:
    Query.SQL.Text := 'Query String'

    Query.Open;

    while not Query.eof do
    Begin
      Liste := TListe.Create;
      with Liste do
      Begin
        liste.test1:= Query.FieldByName('test1').AsWideString;
        .
        .
        .
      end;

      Vst.addchild(nil, Liste);

      Query.Next;
    End;
Steven
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#7

AW: Daten schnell in VST laden

  Alt 15. Sep 2010, 12:15
Hi,

mach doch mal zwei Schleifen, eine, die z.B. ein Array mit den "Liste"-Objekten befüllt, und dann eine, die die Nodes hinzufügt, basierend auf dem Array. Und dann guck mal, welche die meiste Zeit verbraucht. Ich vermute, dass die DB-Sachen dauern, das .Add() aber ganz schnell geht. Und falls nicht, versuch es mal mit dem RootNodeCount, wie oben vorgeschlagen.

HTH
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#8

AW: Daten schnell in VST laden

  Alt 15. Sep 2010, 12:18
Dann wird aber Zeit gleich bleiben im Endeffekt?
Oder verstehe ich das falsch?
Steven
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#9

AW: Daten schnell in VST laden

  Alt 15. Sep 2010, 12:59
RootNodeCount auf RecordCount des DataSets setzen und im GetText den Datensatz im Dataset über den NodeIndex referenzieren. Dann wird beim Scrollen durch den VST auch im Dataset gescrollt.
Delphi-Quellcode:
  ds.Open;
  vst.RootNodeCount := ds.RecordCount;

...

// Im OnGetText
// Setzt vorraus, dass du vorher Columns im VST angelegt hast,
// die vom Index genau zu seinen Feldern im Dataset passen
// ansonsten einfach nen bestimmtes Feld nehmen
  if Column > -1 then
  begin
    ds.RecNo := Node.Index + 1;
    CellText := ds.Fields[Column].AsString;
  end;
@Luckie: Solch eine pauschale Aussage halte ich für überflüssig, es gibt durchaus Anwendungsfälle, wo man viele Daten präsentiert bekommt. Ob man dann eine weitere Auswertung durchführen kann (über Filter etc) steht auf einem anderen Blatt. 2 Fälle die mir sofort einfallen: 1. Anschauen eines Logs, 2. SQL Tool
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

AW: Daten schnell in VST laden

  Alt 15. Sep 2010, 13:01
Ob man dann eine weitere Auswertung durchführen kann (über Filter etc) steht auf einem anderen Blatt. 2 Fälle die mir sofort einfallen: 1. Anschauen eines Logs, 2. SQL Tool
Und warum dann den Filter nicht schon vorher anwenden?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 07:57 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