[abi-datenbank] Parameterübergabe an Formulare

  • From: "Daniel Baulig" <iparanoid@xxxxxx>
  • To: <abi-datenbank@xxxxxxxxxxxxx>
  • Date: Mon, 16 Feb 2004 17:00:40 +0100

Hoi!

Hier ein wenig Source Code und Erklärung für Andreas und Cihan, welche 
mich explizit auf das Problem der Parameterübergabe angesprochen haben.
Als Beispiel führe ich hier eine Ereignisbehandlungsroutine für eine
Eingabemaske auf. Durch Doppelklick auf das Kombinationsfeld ("Drop-Down
Liste") AuswahlListe öffnet sich ein modales Formular (dh solange dieses
Formular geöffnet ist, lässt sich nur dieses Formular bearbeiten) und 
bietet eine Maske zum editieren der sich in dem Kombinationsfeld 
enthaltenen Einträge. Dabei wird bei öffnen des Unterformulars 
automatisch der im Kombinationsfeld zur Zeit ausgewählte Eintrag 
angesprungen. Sollte kein Eintrag gewählt sein, so wird im 
Unterformular ein neuer Eintrag angelegt. Damit die Änderungen im 
Hauptformular auch dargestellt werden, muss das Eingabefeld seine Daten 
von der Datenbank neu beziehen.

Private Sub EingabeFeld_DblClick(Cancel As Integer)
    ; Prüfen ob ein Eintrag gewählt wurde
    If Not IsNull(EingabeFeld) Then 
          ; Falls dem so ist das Unterformular mit entsprechenden Parametern
aufrufen
        DoCmd.OpenForm "frmUnterformular", , , "EintragsID = " &
EingabeFeld, , acDialog, "NotNew" 
    Else
          ; wurde kein Eintrag gewählt, das Unterformular ohne Parameter
öffnen
        DoCmd.OpenForm "frmUnterformular", , , , , acDialog
    End If
    ; die Daten neu beziehen
    EingabeFeld.Requery
End Sub

Die Open-Ereignis-Behandlungsroutine im Unterformular sieht wie folgt 
aus:

Private Sub Form_Open(Cancel As Integer)
    ; Prüfen ob _keine_ Argumente (Parameter) übergeben worden
    If IsNull(OpenArgs) Or OpenArgs = "" Then
          ; Falls dies der Fall ist, Neuen Datensatz auswählen
        DoCmd.GoToRecord , , acNewRec
    End If
End Sub

Der letzte Parameter im DoCmd.OpenForm ("NotNew") ist im Unterformular 
im Parameter "OpenArgs" verfügbar. Das übergeben eines beliebigen 
Parameters führt also im Unterformular dazu, dass kein neuer Datensatz 
gewählt wird (der String "NotNew" wurde hier nur gewählt um 
selbsterklärend zu sein, theoretisch würde jeder andere auch seinen 
Zweck erfüllen). Um den Mechanismus in seiner Ganzheit zu verstehen ist 
es jedoch auch erforderlich sich mit dem Parameter an 4. Stelle zu 
beschäftigen, dieser ist für das wählen des Gewünschten Eintrages 
zuständig. Dieser (und alle anderen DoCmd.OpenForm) Parameter wird 
jedoch zu genüge in der ACCESS Online-Hilfe beschrieben (das Stichwort 
"OpenForm" sollte hier zu den gewünschten Informationen führen).

Gruesse

Daniel



Other related posts:

  • » [abi-datenbank] Parameterübergabe an Formulare