Unterformular Element variabel auslesen

Moderator: ModerationP

Unterformular Element variabel auslesen

Beitragvon PetraLuise » 13. Aug 2019, 09:48

Hallo zusammen,
über ein Navigationsformular rufe ich verschiedene Formulare mit und ohne weitere Unterformulare auf.
In einer Prozedur überprüfe ich dann alle Controls ob sie eine Änderung erfahren haben, was auch gut funkioniert, die Änderungen werden in einer Datei protokolliert.
Grobe Skizze: frmNavigation!NavigationsUfo -> Hauptformular -> Unterformular(e)

So sieht es jetzt aus 8-)
Code: Alles auswählen
...
Dim objAktFrm As Form
Set objAktFrm = Screen.ActiveForm!NavigationsUfo!UfoXYZ.Form         ' Name des Ufofeldes(UfoXYZ) im Hauptformular aus dem NavigationsUfo
....
Mit dem objAktFrm kann ich jetzt alle Controls des Unterformulars durchsuchen, ich muss aber UfoXYZ benennen.


Jetzt möchte ich in meiner allgemeinen Routine nicht jedes einzelne Formular kennen müssen, sondern die 'ansprache' variabel gestalten.
Meine Vorstellung wäre ... was natürlich nicht funktioniert!
Code: Alles auswählen
Dim sNameHFCtrl as String
Dim objAktFrm As Form
...
sNameHFCtrl = Screen.ActiveForm!NavigationsUfo.Form.ActiveControl.Name        '  Name des UfoFeldes 'UfoXYZ' im HF
Set objAktFrm = Screen.ActiveForm!NavigationsUfo! & (sNameHFCtrl) & .Form"    ' so muss ich den Namen nicht kennen
...

Diese Functuion rufe ich im Ereignis Form_BeforeUpdate auf.
Hat jemand eine Idee wie ich sowas bewerkstelligen könnte?
Gruß
PetraL
PetraLuise
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 56
Registriert: 18. Aug 2014, 15:28

Re: Unterformular Element variabel auslesen

Beitragvon knobbi38 » 13. Aug 2019, 10:17

Hallo PetraLuise,
siehe mal diesen Threat, vielleicht gibt das eine Anregung:
http://www.office-loesung.de/p/viewtopic.php?f=167&t=812391

Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1210
Registriert: 02. Jul 2015, 14:23

Re: Unterformular Element variabel auslesen

Beitragvon PetraLuise » 13. Aug 2019, 13:43

Hallo Ulrich,
das kann ein neuer Weg sein, .... Ich habe es ausprobiert - und was soll ich sagen - läuft!

Da es mehrere Ufos in meinem Navigations SubForm gibt, benötige ich nur das aktive Ufo. Ich könnte natürlich einfach alle Controls aller Ufos prüfen. Das gehört dann zur Kathegorie 'nicht schön aber selten'.
Ich würde gerne folgende Variante einsetzen, schaffe es aber nicht den Fokus abzufragen.
Weis jemand wo hier der Fehler ist? (Habe ich so schon x-fach genutzt :( )
Code: Alles auswählen
Dim objFrm As Form, Frm As Form
Dim objCtl As Control
...
Set Frm = Screen.ActiveForm!NavigationsUfo.Form
For Each objCtl In Frm.Controls
      If objCtl.ControlType = acSubform AND objCtl.SetFocus Then
          Set objFrm = objCtl.Form
          Exit For
      End If
Next
...

Fehler beim kompilieren: Function oder Variable erwartet :shock:
Gruß
PetraL
PetraLuise
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 56
Registriert: 18. Aug 2014, 15:28

Re: Unterformular Element variabel auslesen

Beitragvon knobbi38 » 13. Aug 2019, 14:05

Hallo PetraLuise,

ich bin mir gar nicht mal sicher, ob Screen.ActiveForm überhaupt in Verbindung mit SubForms funktioniert. Das müßte ich mal ausprobieren.
Egal, brauchst du in diesem Fall auch nicht. Ein aktives UFO enthält auch das aktive Control mit dem Fokus. Mit Screen.ActiveControl kann das ermittelt werden und mit Referenz der Control.Parent-Eigenschaft bekommt man das dazugehörige Formular als Objek. Über diese Referenz bekommt man dann an alle anderen Wert, ohne wissen zu müssen, in welchem SubForm-Control dieses jetzt aktuell geladen ist - was man natürlich auch über Umwege ermitteln könnte.

Gruß Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1210
Registriert: 02. Jul 2015, 14:23

Re: Unterformular Element variabel auslesen

Beitragvon PetraLuise » 13. Aug 2019, 14:18

Zeit für einen Pott Kaffe!! :oops:
Den Fokus so abzufragen, wie man ihn setzt geht natürlich nicht!

Meine Flexilösung lautet:
Code: Alles auswählen
Set Frm = Screen.ActiveForm!NavigationsUfo.Form                                         ' Ufo1 im Navigationsformular
For Each objCtl In Frm.Controls                                                          ' Controls in Ufo1 durchsuchen
    If (objCtl.ControlType = acSubform) And _
       (Screen.ActiveForm!NavigationsUfo.Form.ActiveControl.Name = objCtl.Name) Then    ' aktives Ufo2 im Ufo1
          Set objFrm = objCtl.Form                                                      '  mit Object Ufo2 weiter arbeiten.
          Exit For
    End If
Next
...


Danke, Ulrich, für den Schups in die richtige Richtung.
Gruß
PetraL
PetraLuise
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 56
Registriert: 18. Aug 2014, 15:28

Re: Unterformular Element variabel auslesen

Beitragvon Bitsqueezer » 15. Aug 2019, 08:42

Hallo,

Vorsicht: "Parent" ist nicht zwingend ein Formular (sonst hätte "Parent" den Objekttyp Form). Der Objekttyp ist "Object" und kann damit theoretisch alles sein. Parent kann ebensogut z.B. ein Registerelement sein. Man muß also schon genauer prüfen, was man da als Parent zurückbekommt.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7035
Registriert: 21. Jun 2007, 12:17


Zurück zu Access Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste