Beim Befüllen und Darstellen von ObjectList-Controls gibt es verschiedene Möglichkeiten den Zugriff auf die Datenbank, die Zeit die zur Darstellung von Informationen gebraucht wird, sowie die Zeit, die ActiveSkin während der Darstellung des Controls blockiert werden muss, zu optimieren.
Automatische Optimierung von gelesenen Datenspalten
Der ObjectList-Control verwendet eine automatische Optimierung der über eine Datenbankaktion gelesenen Spalten. Dadurch wird im Allgemeinen erreicht, dass nur die wirklich notwendige Spaltenmenge aus der Datenbank gelesen wird.
Durch Veränderung der angezeigten Spaltenmenge kann es jedoch dazu kommen, dass - zumindest bis zum nächsten Laden des Controls - nicht alle benötigten Datenspalten zur Verfügung stehen, und durch einen weiteren SQL-Zugriff für jede Datenzeile ergänzt werden müssen.
In einem solchen Fall wird in der ActiveSkin Statuszeile ein "FillUp" Eintrag zu sehen sein, der ggf. jede Sekunde aktualisiert wird.
"FillUps" sollte möglichst nicht auftreten, da diese zu erhöhten Zugriffszeiten führen.
Die Situation sollte sich normalerweise durch erneutes Anzeigen des aktuellen Dialogschrittes, ohne Veränderung der genutzten Spaltenmenge beheben.
Durch Setzen der Umgebungsvariable "SOGUseDataAccessOptimizer" auf den Wert "0" kann diese Form der Optimierung abgeschaltet werden.
Verminderung der Blockierungszeit von ActiveSkin durch vollständiges Laden aller Zellen
Die Zeit, die ActiveSkin während des Ladens eines ObjectList-Controls vollständig blockiert werden muss kann vermindert werden, indem in der Ansicht des Controls die Option "Alle Zellen im voraus befüllen" auf "true" gestellt wird.
Dies bringt vor allem dann einen guten Effekt, wenn der Control nach Spalten sortieren oder Gruppieren muss, deren Werteermittlung relativ lange dauert. Also z.B. bei berechneten Werten, wenn zu der Berechnung weitere Datensätze angelesen werden müssen.
Wird nun die Option "Alle Zellen im voraus befüllen" auf "true" gestellt, werden vor dem Laden der Datensätze in den Control alle Datenzellen mit ihren endgültigen Werten befüllt. Das anschließende eigentliche Laden und Sortieren oder Gruppieren der Daten blockiert ActiveSkin dann nur noch für die bestmögliche kürzeste Zeit.
Die Gesamtladezeit des Controls kann jedoch durch Setzen dieser Option auch negativ beeinflusst werden, da normalerweise gar nicht alle Zellen gefüllt werden müssen, sondern nur jeweils diejenigen, die gerade im sichtbaren Bereich des Controls liegen.
Sofortige Anzeige von eintreffenden Daten
Für bestimmte Datenmengen kann es sinnvoll sein, eine sofortige Anzeige von eintreffenden Datenzeilen zu erreichen.
Dies gilt z.B. wenn sehr viele Datenzeilen zurückgeliefert werden, der Anwender sich aber unter Umständen entscheiden können soll, bereits mit den ersten gelieferten Datenzeilen arbeiten zu wollen. Er kann dann das weitere Lesen der Datenzeilen abbrechen, und mit dem bis dahin gemeldeten Ergebnis fortfahren.
Die Funktion kann auch genutzt werden, wenn nur sehr wenige Datenzeilen, diese jedoch - jede für sich - sehr langsam vom Datenbankserver geliefert werden.
Die Funktion wird aktiviert, indem in der aktuellen Ansicht des entsprechenden ObjectSelector-Controls die Option "Kontinuierliche Laden erlauben" verwendet wird.
Bei Verwendung dieser Option kann desweiteren über Designeinstellungen festgelegt werden, ob jeder Datensatz einzeln angezeigt werden soll, oder ob die Anzeige zuerst zwischengespeichert und dann in Blöcken angezeigt wird.
Legen Sie dazu die Designeigentschaften "Basisdaten / Kontinuierliche Datenanzeige nach Millisekunden" und "Kontinuierliche Datenanzeige Intervall Millisekunden" fest. Der Erste Wert legt fest, nach wievielen Millisekunden die kontinuierliche Datenanzeige beginnt, der zweite wie häufig neuankommende Daten in den Control aktualisiert werden. Werden beide Werte auf "0" eingestellt, wird jeder Datensatz einzeln dargestellt.
Durch ungünstige Konstellation der hier beschriebenen Einstellungen kann jedoch auch ein stark negativer Effekt erzeilt werden, da das einzelne Laden von Datenzeilen in den Control ungleich länger dauert, als das vollständige Laden eines Gesamtergebnisses.
Kombinieren von sofortiger Anzeige von Daten und vollständigem Laden von Zellen
Die oben beschriebenen Optionen können auch kombiniert werden. Dadurch werden ankommende Daten kontinuierlich angzeigt, die Zellen jedoch immer schon "im Hintergrund" vollständig geladen, bevor sie an den Control übermittelt werden.