Formular im Tiefschlaf
Veröffentlicht am 30.12.2003
Bildschirmaktualisierung eines Formulars verhindern.
Wenn Sie umfangreiche Vorgänge an Formularen durchführen, die mit Bildschirmaktualisierungen verbunden sind, kosten diese oftmals sehr viel Zeit.
Mit Hilfe der Painting-Eigenschaft können Sie die Bildschirmaktualisierung eines Formulars verhindern, um so die Abarbeitungsgeschwindigkeit zu beschleunigen.
Besonders stark macht sich die Zeitverzögerung des Bildschirmaufbaus beim Einsatz der Requery-Methode bemerkbar, die die Datenquelle eines Formulars auf den neusten Stand bringt. Hierbei wird nämlich automatisch zum ersten Datensatz der Datenquelle gewechselt.
Wenn Sie aber direkt nach der Aktualisierung sowieso auf einen anderen Datensatz positionieren möchten, ist der Wechsel zum ersten Datensatz eher störend.
Setzen Sie in diesem Fall die Painting-Eigenschaft des Formulars vorher auf False, um Bildschirmaktualisierungen zu verhindern. Anschließend führen Sie die Requery-Methode aus und positionieren auf den richtigen Datensatz.
Damit Access diesen auch im Formular präsentieren kann, dürfen Sie anschließend nicht vergessen, die Painting-Eigenschaft wieder auf True zu setzen. Wenn Sie dies vergessen, reagiert das Formular auf keine Benutzeraktionen mehr und Sie könnten den Eindruck eines Systemabsturzes erhalten.
Das folgende Beispiel positioniert in einem Adressenformular auf die Adresse mit der Nummer 3. Vor der Positionierung erfolgt eine Aktualisierung der Datenquelle:
Sub PaintingDemo()
Dim FormObj As Form
Dim R As Recordset
On Error GoTo Err
Set FormObj = Forms!Adressen
FormObj.Painting = False
FormObj.Requery
Set R = FormObj.RecordsetClone
R.FindFirst "AdresseNr = 3"
If Not R.NoMatch Then FormObj.Bookmark = R.Bookmark
Ende: FormObj.Painting = True Exit Sub
Err: MsgBox Err.Description Resume Ende
End Sub
Beachten Sie, dass die Painting-Eigenschaft in diesem Beispiel auch dann wieder auf True gesetzt wird, falls ein Laufzeitfehler auftritt.