ACCESS 2007 Performance bei Recordsource Zuweisung in Formular

14/05/2008 - 20:11 von Jörg Bottler | Report spam
Hallo,

in Access 2007 dauert das Zuweisen einer Recordsource im Formular extrem
lange.

Variante 1:
Me.RecordSource = " Select * from tblHuhu WHERE Huhu_Nr = " & parNr

Variante 2:
tblHuhu dem Formular als Datenquelle mitgeben.
und dann:

Set rst = Me.RecordsetClone

rst.FindFirst "Huhu_Nr=" & parNr
If rst.NoMatch Then
Set rst = Nothing
Exit Sub
End If

Me.Bookmark = rst.Bookmark

Làuft um vieles schneller. Klar ich muss natürlich bei Variante 1 nicht mehr
die Datensàtze durchlaufen.
Trotzdem widerspricht das etwas den Performance-Tips von
http://www.granite.ab.ca/access/performancefaq.htm

Zumal ich auch festgestellt habe, dass Listboxen, etc. auch schneller sind
in Access 2007, wenn man die Datenquelle schon im Steuerelement definiert.

Hat jemand àhnliche Erfahrung oder bessere Tips ?

Habe etwas bedenken, wenn die Backend im Netz steht und ich jedesmal beim
Laden des Formulars die komplette Tabelle tblHuhu laden muss und damit die
Daten über's Netz jage.

Apropo: Gibt es eine Möglichkeit eine Abfrage im Backend laufen zu lassen
und dann nur die Ergebnismenge über's Netz zu schaufeln. Wohl gemerkt meine
Backend ist auch eine AccessDB.

Grüße
Jörg
 

Lesen sie die antworten

#1 Josef Poetzl
14/05/2008 - 20:34 | Warnen spam
Hallo!

Jörg Bottler schrieb:
in Access 2007 dauert das Zuweisen einer Recordsource im Formular extrem
lange.

Variante 1:
Me.RecordSource = " Select * from tblHuhu WHERE Huhu_Nr = " & parNr

Variante 2:
tblHuhu dem Formular als Datenquelle mitgeben.
und dann:

Set rst = Me.RecordsetClone

rst.FindFirst "Huhu_Nr=" & parNr
If rst.NoMatch Then
Set rst = Nothing
Exit Sub
End If

Me.Bookmark = rst.Bookmark

Làuft um vieles schneller. Klar ich muss natürlich bei Variante 1 nicht mehr
die Datensàtze durchlaufen.
Trotzdem widerspricht das etwas den Performance-Tips von
http://www.granite.ab.ca/access/performancefaq.htm



Wenn du das Formular anfangs ungebunden ladest und erst spàter die
Recordsource-Zuweisung vornimmst, sollte Variante 1 auf jeden Fall
schneller sein.

Ist die Objektnamen-Autokorrektur aus? (Wenn es mir schwer fàllt
bestimmte Performance-Unterschiede zu verstehen, gebe ich gerne diesem
ursuper Feature die Schuld. :-))


Zumal ich auch festgestellt habe, dass Listboxen, etc. auch schneller sind
in Access 2007, wenn man die Datenquelle schon im Steuerelement definiert.



Wie meinst du das?

Hat jemand àhnliche Erfahrung oder bessere Tips ?

Habe etwas bedenken, wenn die Backend im Netz steht und ich jedesmal beim
Laden des Formulars die komplette Tabelle tblHuhu laden muss und damit die
Daten über's Netz jage.



Das sollte imo nicht passieren, da auch FindFirst einen Index nutzen
sollte.

Apropo: Gibt es eine Möglichkeit eine Abfrage im Backend laufen zu lassen
und dann nur die Ergebnismenge über's Netz zu schaufeln. Wohl gemerkt meine
Backend ist auch eine AccessDB.



Das ist immer so ein Sache mit dem "Daten übers Netz schaufeln". Es
werden nicht unbedingt alle Daten übertragen, sondern nur dann wenn
kein Index genutzt werden kann. Natürlich muss für eine Indexsuche
auch ein bestimmter Datenbestand übertragen werden, da kein aktives
DBMS vorliegt.
Eine Abfrage kann aber nie im Access-BE laufen, da ein Access-(Jet)-BE
auf die DBEngine des Clients angewiesen ist.

mfg
Josef

EPT: (Access Error Prevention Table) http://access.joposol.com/
FAQ: (Access-FAQ von Karl Donaubauer) http://www.donkarl.com/

Ähnliche fragen