Öffnungsinfos via Argumente (Access 97, 2000)
Veröffentlicht am 30.12.2003
In vielen Fällen ist es erforderlich, einem Formular beim Öffnen bestimmte Informationen zu übergeben.
So kann es bei einem Adressenformular beispielsweise erforderlich sein, direkt nach dem Öffnen einen bestimmten Adressendatensatz oder den neuen leeren Datensatz anzuzeigen. Ein einfacher Weg ist hierbei die Verwendung globaler Variablen, die vor dem Öffnen mit Werten (z.B. der Nummer der anzuzeigenden Adresse) versehen werden. Innerhalb der BeimÖffnen-Ereignisprozedur des Formulars können diese Variableninhalte nun ausgewertet werden.
Eine bessere Möglichkeit zur Übergabe von Informationen an Formulare stellen die so genannten Öffnungsargumente zur Verfügung.
Der Nachteil dieser Vorgehensweise ist allerdings, dass Sie das Formular zwecks Wiederverwendung nicht ohne weiteres in eine andere Datenbank kopieren können. Hierbei müssen Sie nämlich darauf achten, daß Sie die Definition der globalen Variablen ebenfalls kopieren.
Die OpenForm-Aktion besitzt einen Parameter mit dem Namen OpenArgs, mit dessen Hilfe dem zu öffnenden Formular Daten in Form eines Variant-Ausdrucks übergeben werden können.
Der folgende Ausdruck übergibt dem Formular Adressen beispielsweise die Adressennummer 3:
DoCmd.OpenForm FormName:="Adressen", OpenArgs:=3
Innerhalb der BeimÖffnen-Ereignisprozedur des Adressenformulars kann das Öffnungsargument nun ausgewertet werden. Zu diesem Zweck stellen alle Formulare die Eigenschaft OpenArgs zur Verfügung, die den Zugriff auf die übergebenen Daten erlaubt.
Die folgende Prozedur liest die Datensatznummer aus dem Öffnungsargument aus und positioniert den aktuellen Datensatz auf die passende Adresse:
Private Sub Form_Open(Cancel As Integer)
'Wenn kein Öffnungsargument angegeben wurde,
'soll das Formular normal geöffnet werden
If Not IsNull(Me.OpenArgs) Then
Select Case Me.OpenArgs Case "Neu"
'Auf den neuen Datensatz positionieren
DoCmd.GoToRecord Record:=acNewRec
Case Else
'Primärschlüsselfeld aktivieren
Me!AdresseNr.SetFocus
'Nach Adressennummer suchen
DoCmd.FindRecord Me.OpenArgs
End Select
End If
End Sub
Sollte das Öffnungsargument den Text Neu enthalten, positioniert die Prozedur automatisch auf den neuen Datensatz.
Obwohl der Datentyp des Öffnungsarguments Variant ist, können einem Formular keine Informationen in Form eines Variant-Arrays übergeben werden.
Wenn Sie trotzdem mehrere Informationen übergeben möchten, müssen Sie diese hintereinander in der OpenArgs-Zeichenkette anordnen, beispielsweise mit einem Hochkomma als Trennzeichen, und nachher wieder voneinander trennen.