Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 3/2008.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Verhindern Sie in Endlos- und Datenblattformularen das Wechseln des Datensatzes nach dem Aktualisieren.

Techniken

Formulare, VBA

Voraussetzungen

Access 2000 und höher

Beispieldateien

Datensatzposition.mdb

Shortlink

602

Kein Datensatz- und Positionswechsel bei Requery

André Minhorst, Duisburg

Formulare in der Endlos- und in der Datenblattansicht haben den Nachteil, dass sie nach einer Aktualisierung erstens nicht den gleichen Datensatz wie vor dem Requery anzeigen und schon gar nicht in der gleichen Position - außer natürlich, es handelt sich um den ersten Datensatz des Formulars. Das erschwert das Weiterbearbeiten von Daten, denn der Benutzer muss zuvor erst wieder zum gewünschten Datensatz navigieren.

Problem

Während der Bearbeitung eines Datensatzes in einem Formular, das in der Endlos- oder der Datenblattansicht angezeigt wird, kann es sein, dass per Code die Requery-Methode des Formulars aufgerufen wird. Dies führt dazu, dass der Datensatzzeiger wieder auf dem ersten Datensatz der Datenherkunft positioniert wird. Ein solches Requery ist beispielsweise nötig, wenn per VBA-Code die Daten dieses Datensatzes geändert wurden und die Ã"nderung im Formular angezeigt werden soll.

Lösung

Viele Benutzer geben sich damit zufrieden, wenn der vor dem Requery aktive Datensatz auch nach dem Requery noch aktiviert ist. Für diesen Fall reicht es aus, wenn Sie rund um das Requery die folgenden Anweisungen anlegen:

Dim lng As Long

lng = Me!ArtikelID

Me.Painting = False

Me.Requery

Me.Recordset.FindFirst "ArtikelID=" & lng

Me.Painting = True

Dabei speichert lng zunächst den Primärschlüsselwert des aktuellen Datensatzes. Das Setzen der Painting-Eigenschaft des Formulars auf den Wert False sorgt dafür, dass das Formular bis zum Zurücksetzen dieser Eigenschaft auf den Wert True nicht aktualisiert wird, was eventuelles Flackern verhindert. Nach der eigentlichen Requery-Methode springt das Formular dann wieder zum Datensatz mit der zuvor gemerkten ID, das Setzen von Painting auf True aktiviert die Formularaktualisierung wieder. Der Haken bei dieser Lösung ist, dass der zuvor ausgewählte Datensatz zwar noch aktiv und auch sichtbar ist, sich aber nicht mehr an der gleichen Stelle befindet (s. Abb. 1).

pic001.tif

Abb. 1: Nach dem Requery unter Beibehaltung des aktiven Datensatzes wird dieser ganz oben angezeigt, sofern dieser nicht zu den Datensätzen gehört, die beim Öffnen des Formulars sichtbar sind.

Positionswechsel verhindern

Abhilfe schafft eine Erweiterung der oben aufgeführten Zeilen, die auch die Position prüfen und diese wiederherstellen. Damit Sie dies leicht in eigene Anwendungen einbauen können, haben wir eine Routine vorbereitet, die Sie in ein Standardmodul einfügen und vom betroffenen Formular aus aufrufen können. Anstelle der üblichen Requery-Anweisung geben Sie nun etwa die folgende Zeile ein:

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Verwandte Beiträge:

Formularposition speichern und wiederherstellen

Benutzerverwaltung

Transparenz und andere Effekte in Formularen

Modale Dialoge mal anders

Individuelle Datenauswahl

Formulare für die Dateneingabe

Daten visualisieren mit HTML

Validieren mit Klasse

Datenbank nach Vorlage

Fortschrittsanzeige

Meldungsfenster im Eigenbau

Alphabetisches Register

Änderungsdaten protokollieren

Zoomfenster im Eigenbau

© 2003-2015 André Minhorst Alle Rechte vorbehalten.