Geschwindigkeit der Anzeige von Datensätzen in Endlosformular

21/07/2008 - 16:35 von Felix Liebrecht | Report spam
Hallo NG,

ich arbeite mit der MSDE2000 als Backend.

in einem Endlosformular sollen alle ca. 3000 Datensàtze
einer Tabelle Table1 sortiert und zweifarbig angezeigt
werden. Dazu verwende ich die SP spAdressen, in der eine
ensprechende temporàre Tabelle #temp1 angelegt wird
mit einer zusàtzlichen Spalte 'RowNr' vom Datentyp
INT als Identitàt. Die Ausgangstabelle Table1 wird dann
sortiert in die Tabelle #temp1 kopiert.
Mit der Anweisung frmX.RecordSource "EXEC spAdressen '" & strBedg & "','" & strSort & _
"','" & strSortRichtg & "'"
wird das Formular mit Datensàtzen versorgt.

Jetzt zu meiner Frage:
Ich habe festgestellt, dass beim ersten Öffnen des Formulars
es relativ lange braucht, bis die Anzeige 'da' ist. Relativ insofern,
als ab dem 2. Aufruf des Formulars es wesentlich schneller geht
(Größenordnungen: beim 1.Mal 6 Sekunden, ab dem 2.Mal
weniger als 0,25 Sekunden).
Kann man die erste Anzeige irgendwie beschleunigen oder
ist das ein Luxusproblem?

Gruß
Felix
 

Lesen sie die antworten

#1 Henry Habermacher
22/07/2008 - 04:21 | Warnen spam
Hallo Felix

"Felix Liebrecht" wrote in message
news:g626rp$lbc$02$
ich arbeite mit der MSDE2000 als Backend.

in einem Endlosformular sollen alle ca. 3000 Datensàtze
einer Tabelle Table1 sortiert und zweifarbig angezeigt
werden. Dazu verwende ich die SP spAdressen, in der eine
ensprechende temporàre Tabelle #temp1 angelegt wird
mit einer zusàtzlichen Spalte 'RowNr' vom Datentyp
INT als Identitàt. Die Ausgangstabelle Table1 wird dann
sortiert in die Tabelle #temp1 kopiert.
Mit der Anweisung frmX.RecordSource > "EXEC spAdressen '" & strBedg & "','" & strSort & _
"','" & strSortRichtg & "'"
wird das Formular mit Datensàtzen versorgt.

Jetzt zu meiner Frage:
Ich habe festgestellt, dass beim ersten Öffnen des Formulars
es relativ lange braucht, bis die Anzeige 'da' ist. Relativ insofern,
als ab dem 2. Aufruf des Formulars es wesentlich schneller geht
(Größenordnungen: beim 1.Mal 6 Sekunden, ab dem 2.Mal
weniger als 0,25 Sekunden).
Kann man die erste Anzeige irgendwie beschleunigen oder
ist das ein Luxusproblem?




Meine erste Analyse wàre mal zu schauen, ob für die Sortierung der
Ausgangstabelle ein geeigneter Schlüssel vorliegt und ob beim Client auch
nochmals sortiert wird (was zu einem überflüssigen Zeitverlust führen
könnte). Dann würde ich auch über der Temp Tabelle einen Index anlegen, über
das Feld RowNr, z.B. einfach als Primary Key definieren.
Ich vermute allerdings, dass nicht die Verarbeitung auf dem SQL Server
sondern bei der Übermittlung der Daten auf den Client lange braucht. Wenn
der SQL Server mal seine Temp Tabelle angelegt hat, müssen die 3000 rows ja
dann über das Netzwerk zum Client geschickt werden. Wie gross ist denn eine
durchschnittliche Row? Multipiziere dies mit 3000 und Du weiss, wieviele
Daten da übertragen werden müssen. Daher mal der nàchste Ansatz:
Sicherstellen, dass nicht einfach ein SELECT * FROM ... gemacht wird,
sondern die Felder explizit angegebben werden, die auch wirklich angezeigt
werden müssen. Oftmals ist ja in einem Endlosformular nicht alles angezeigt
und erst der komplette Datensatz notwendig, wenn die Detailansicht eines
DAtensatzes geöffnet wird.
Der Zeitverlust bei der Übertragung über das Netzwerk würde auch erklàren,
wieso es ab dem 2. Mal viel schneller geht. Da muss nàmlich nichts mehr
übertragen werden, das ist ja dann alles bereits im Cache der Jet Engine
drin.

Weitere Ansatzpunkte: Stelle sicher, dass das Recordset nicht vom Typ
Snapshot ist. Dann sollte Access nur die (und ein paar mehr) Datensàtze
einlesen, welche gerade für die Anzeige benötigt werden. Im Snapshot Modus
müssen immer alle Datensàtze gemeinsam geladen werden.

Und schlussendlich könntest Du Dir überlegen, ob Du allenfalls das Formular
zuerst mal leer anzeigst und den Benutzer eine Eingabe in einem Filter
machen làsst, so dass Du nur noch einen Teil der 3'000 Datensàtze
transferieren musst, alle wird der Benutzer ja kaum gleichzeitig anzeigen
und lesen können.

Gruss
Henry

Microsoft MVP Office Access
Keine E-Mails auf Postings in NGs. Danke.
Access FAQ www.donkarl.com

Ähnliche fragen