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.

Bitte teilen Sie uns Ihre Anrede, Ihren Namen und Ihre E-Mail-Adresse mit:

Anrede:
Vorname:
Nachname:
E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 2/2019.

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

Spalten zweier Datenblätter synchronisieren

Im Beitrag »Neue Datensätze oben anfügen« haben wir uns angesehen, wie Sie ein Unterformular in der Datenblattansicht, das nur einen leeren, neuen Datensatz anzeigt, über einem normalen Datenblatt mit den Daten der gleichen Tabelle platzieren. Damit erhält der Benutzer die Möglichkeit, einen Datensatz oben einzufügen und nicht, wie sonst üblich, unten. Das Problem hierbei ist, dass der Benutzer immer noch die Spalten des oberen Formulars anders anordnen oder ihre Breite ändern kann. Das wirkt sich nicht automatisch auf die Spalten des darunter positionierten Formulars aus. Also müssen wir noch ein wenig Arbeit investieren, um dieses Verhalten zu dieser Lösung hinzuzufügen.

Wir rufen uns zuerst noch einmal die Konstellation der Lösung aus dem Beitrag Neue Datensätze oben anfügen (www.access-im-unternehmen/****) ins Gedächtnis. Hier haben wir ganz oben im Formular frmArtikel ein Unterformular mit geringer Höhe platziert, welches nur die Spaltenköpfe sowie eine einzige Zeile anzeigen soll, die den neuen, leeren Datensatz anzeigt, der sonst unten im Datenblatt angezeigt wird (siehe Bild 1).

Entwurf der beiden übereinander angeordneten Unterformulare in der Datenblattansicht

Bild 1: Entwurf der beiden übereinander angeordneten Unterformulare in der Datenblattansicht

Wenn wir in die Formularansicht wechseln, sehen wir, dass das obere Unterformular genau so platziert ist, dass die Spaltenüberschriften des unteren Unterformulars nicht zu sehen sind. Dadurch erscheint die Ansicht so, als ob es sich tatsächlich nur um ein Formular in der Datenblattansicht handelt, bei dem die Zeile zum Einfügen eines neuen Datensatzes ganz oben angezeigt wird (siehe Bild 2).

Formularansicht der beiden Unterformulare in der Datenblattansicht

Bild 2: Formularansicht der beiden Unterformulare in der Datenblattansicht

Wenn wir nun allerdings die Breiten der Spaltenüberschriften ändern oder deren Anordnung ändern, wirkt sich dies nur auf die Spaltenköpfe selbst und die Zeile mit dem neuen Datensatz im oberen Unterformular aus (siehe Bild 3). Das Verhalten ist ganz normal, denn das untere Unterformular weiß ja nichts vom oberen Unterformular.

Das Anpassen der Spaltenköpfe wirkt sich nicht auf das untere Formular aus.

Bild 3: Das Anpassen der Spaltenköpfe wirkt sich nicht auf das untere Formular aus.

Spalten synchron halten

Wenn wir wollen, dass die Spalten des unteren Unterformulars synchron mit den Spalten des oberen Unterformulars geändert werden, müssen wir die Ereignisse identifizieren, die beim Ändern der Spaltenbreiten und beim Ändern der Reihenfolge der Spalten ausgelöst werden. Wie finden wir diese heraus?

Falls uns kein Ereignis aufgrund seines Namens auffällt, legen wir für die möglichen Ereignisse jeweils eine Ereignisprozedur an und fügen darin entweder eine Debug.Print-Anweisung ein, die den Namen der Ereignisprozedur ausgibt, oder fügen Haltepunkte zu den jeweiligen Prozedurköpfen hinzu.

Hier kommen die folgenden Ereigniseigenschaften in Frage:

  • Beim Klicken
  • Bei Maustaste ab
  • Bei Maustaste auf
  • Bei Mausbewegung

Also hinterlegen wir testweise die folgenden Ereignisprozeduren für die Ereigniseigenschaften:

Private Sub Form_Click()
     Debug.Print "Beim Klicken"
End Sub
Private Sub Form_MouseDown(Button As Integer, _
         Shift As Integer, X As Single, Y As Single)
     Debug.Print "Bei Maustaste ab"
End Sub
Private Sub Form_MouseMove(Button As Integer, _
         Shift As Integer, X As Single, Y As Single)
     If Not Button = 0 Then
         Debug.Print "Bei Mausbewegung"
     End If
End Sub
Private Sub Form_MouseUp(Button As Integer, _
         Shift As Integer, X As Single, Y As Single)
     Debug.Print "Bei Maustaste auf"
End Sub

Hier erkennen wir dann, dass diese Ereignisse immer ausgelöst werden, wenn der Benutzer auf einen der Bereiche mit Ausnahme der Felder zur Eingabe der Daten eine Aktion mit der Maus ausführt – also in den Spaltenköpfen, im Datensatzmarkierer und in dem grauen Bereich links von den Spaltenköpfen und oberhalb des Datensatzmarkierers.

Wann synchronisieren?

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.

Bitte teilen Sie uns Ihre Anrede, Ihren Namen und Ihre E-Mail-Adresse mit:

Anrede:
Vorname:
Nachname:
E-Mail:

© 2003-2018 André Minhorst Alle Rechte vorbehalten.