none
Verweis aus globalem Modul auf Unterformular

    Frage

  • Ich verwende zum Handling der Datenspeicherung eine globale Funtion der ein Array mit Feldnamen, das Recordset, der Formularname, Tabellenname und Primärschlüssel übergeben werden.

    z = gfncSaveData(felder(), rs, "frmVisits", "vwVisits", keystring, Null)

    Die Zuweisung erfolgt in der Art:

    Public Function gfncSaveData _
        ( _
            feldArray() As Variant, _
            rsa As DAO.Recordset, _
            frm As String, _
            tblname As String, _
            keystring As String, _
            zaehler As Variant, _
            Optional tp As Long, _
            Optional patid As Long _
        ) As Integer

    ...

    rsa(feldArray(i)) = Forms(frm)(feldArray(i))

    Das funktioniert aus den verschiedensten Hauptformularen problemlos.

    Schwierigkeiten habe ich mit dem Bezug auf ein Unterformular. Es existiert im Haupformular ein Objekt ctlUfrm, dem verschiedene Unterformulare zugewiesen werden können:

    Private Sub msubSetUfrm(Index As Integer)
    On Error GoTo ProcErr
        Dim sqlStr As String
       
        Select Case Index
        Case 1
            Me.ctlUfrm.SourceObject = "ufrmMeasurement"
            Me.ctlUfrm.Requery
        Case 2
            Me.ctlUfrm.SourceObject = "ufrmImplants"

        End Select
       
       
    End Sub

    Wie greife ich jetzt aus meiner Funktion auf die Steuerelemente z.B. von ufrmMeasurement zu?

    z = gfncSaveData(felder(), rs, "ufrmMeasurement", "vwRegioMeasurement", keystring, Null) funktioniert nicht. Auch der Austausch gegen frmVisits!ufrmMeasurement bringt eine Fehlermeldung (Objekt nicht gefunden.)

    Ich hoffe, mein Anliegen ist einigermaßen verständlich.

    Danke schon mal

    Maik

    Montag, 27. September 2010 12:14

Antworten

Alle Antworten

  • Hallo Maik Hahmann,

    Maik Hahmann schrieb folgendes:
    ...

    Wie greife ich jetzt aus meiner Funktion auf die Steuerelemente z.B. von ufrmMeasurement zu?

    z = gfncSaveData(felder(), rs, "ufrmMeasurement", "vwRegioMeasurement", keystring, Null) funktioniert nicht. Auch der Austausch gegen frmVisits!ufrmMeasurement bringt eine Fehlermeldung (Objekt nicht gefunden.)

    Ich hoffe, mein Anliegen ist einigermaßen verständlich.

    Zugriff erfolgt über:
    Hauptform!UnterformularControlName!FeldName

    also: Haupform!ctlUfrm!Feldname

    Siehe auch: www.donkarl.com?FAQ4.2

    Gruß
    Gunter


    Access FAQ: http://www.donkarl.com

          http://www.avenius.de - http://www.AccessRibbon.de
    http://www.ribboncreator.de - http://www.ribboncreator2010.de

    Montag, 27. September 2010 12:20
    Moderator
  • Hallo Gunter,

    wenn ich versuche ufrmMeasurement durch frmVisits!ctlUfrm zu ersetzen, gibt es dieselbe Fehlermeldung. Auch frmVisits.ctlUfrm oder [ frmVisits]![ctlUfrm] bringen mich nicht weiter. Der Feldname kommt ja später aus dem Array.

    Wie müsste denn in Forms(frm)(feldArray(i)) der String für frm aussehen?

    Danke

    Maik

    Montag, 27. September 2010 12:37
  • Hallo Maik,

    Maik Hahmann schrieb folgendes:

    wenn ich versuche ufrmMeasurement durch frmVisits!ctlUfrm zu ersetzen, gibt es dieselbe Fehlermeldung. Auch/frmVisits.ctlUfrm/ oder /[/ /frmVisits]![ctlUfrm]/ bringen mich nicht weiter. Der Feldname kommt ja später aus dem Array.

    Wie müsste denn in /Forms(frm)(feldArray(i))/ der String für /frm/ aussehen?

    Ungetestet:
    Forms(frm)(UFormControl)(FeldName)

    Gruß
    Gunter


    Access FAQ: http://www.donkarl.com

          http://www.avenius.de - http://www.AccessRibbon.de
    http://www.ribboncreator.de - http://www.ribboncreator2010.de

    Montag, 27. September 2010 12:52
    Moderator
  • Ungetestet:
    Forms(frm)(UFormControl)(FeldName)

    Gruß
    Gunter


    Hallo Gunter,

    So würde es funktionieren, aber genau diesen Teil möchte ich nicht ändern, da ich sonst die Globalität verloren geht (müsste immer prüfen, ob ein Unterformular mit übergeben wird und dies gesondert behandeln).

    Ich hatte gehofft dass mein Problem nur in der Schreibweise der Variable frm liegt, also ob das jetzt mit Klammern, Anführungszeichen oder sonstwas versehen werden muss.

    Hast du da noch eine Idee?

    Gruß Maik

    Montag, 27. September 2010 13:34
  • Hallo Maik,

    Maik Hahmann schrieb folgendes:
    ...

    So würde es funktionieren, aber genau diesen Teil möchte ich nicht ändern, da ich sonst die Globalität verloren geht (müsste immer prüfen, ob ein Unterformular mit übergeben wird und dies gesondert behandeln).

    Ich hatte gehofft dass mein Problem nur in der Schreibweise der Variable /frm/liegt, also ob das jetzt mit Klammern, Anführungszeichen oder sonstwas versehen werden muss.

    Hast du da noch eine Idee?

    Erweitere Deine Funktion um einen Optionalen Parameter z.B.: isSubform
    und ggf. um den Subform/Hauptname

    Dann
    If isSubform =True then
      ' Code für Subform
    else
      ' Code für normales Control
    endif

    Gruß
    Gunter


    Access FAQ: http://www.donkarl.com

          http://www.avenius.de - http://www.AccessRibbon.de
    http://www.ribboncreator.de - http://www.ribboncreator2010.de

    Montag, 27. September 2010 13:40
    Moderator
  • Hallo Gunter,

     

    vielen Dank. Ich werde es wohl so machen müssen. Da es sich aber nicht nur um eine Funktion handelt, wird das mit etwas Arbeit verbunden sein. Ich hatte halt gehofft, dass man in einer Varaiable /frm/ auch den Verweis auf das Unterformular mit übergeben könnte, also aus

    Forms(frm)(UFormControl)(FeldName) die Werte für (frm) und (UFormControl) in einer Variable zusammenfassen.

     

    Gruß Maik

    Dienstag, 28. September 2010 06:15
  • Hallo Maik,

    Maik Hahmann schrieb folgendes:

    vielen Dank. Ich werde es wohl so machen müssen. Da es sich aber nicht nur um eine Funktion handelt, wird das mit etwas Arbeit verbunden sein. Ich hatte halt gehofft, dass man in einer Varaiable frm auch den Verweis auf das Unterformular mit übergeben könnte, also aus

    Forms(frm)(UFormControl)(FeldName) die Werte für (frm) und (UFormControl) in einer Variable zusammenfassen.

    IMO ist das nicht möglich.

    Gruß
    Gunter


    ________________________________________________________
    Access FAQ: http://www.donkarl.com

          http://www.avenius.de - http://www.AccessRibbon.de
    http://www.ribboncreator.de - http://www.ribboncreator2010.de

    • Als Antwort markiert Maik Hahmann Dienstag, 28. September 2010 06:31
    Dienstag, 28. September 2010 06:23
    Moderator