Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Pflichtfelder prüfen-Zugiff vom Hauptformular auf Steuerelemnte im Unterformular

Begonnen von gats1966, November 07, 2010, 16:56:47

⏪ vorheriges - nächstes ⏩

gats1966

Hallo,
habe folgendes Problem:
Wie kann ich auf die Pflichtfelder im Unterformular vom Hauptformular auszugreifen, bei diesem Code:

Private Function PflichtfeldercheckH()

Dim ctl As Control
Dim AnzahlFehler As Integer

AnzahlFehler = 0

For Each ctl In Form_Hauptformular.Controls
If (ctl.Tag) = "Pflichtfeld" Then

Select Case ctl.ControlType
                Case 105:    'Auswahlrahmen
                    If IsNull(ctl.Value) Then AnzahlFehler = AnzahlFehler + 1
                Case 109:    'Textfeld
                    If IsNull(ctl.Value) Or Len(Nz(ctl.Value, "")) = 0 Then AnzahlFehler = AnzahlFehler + 1
                Case 110, 111:   'Listenfeld und Kombinationsfeld
                    If IsNull(ctl.Value) Then AnzahlFehler = AnzahlFehler + 1
                'case Unterformlar:
End Select
        End If
    Next
    If AnzahlFehler = 0 Then
        PflichtfeldercheckH = True
        DoCmd.GoToRecord , , acNewRec
    Else
        MsgBox "Es wurden nicht alle Pflichtfelder ausgefüllt!" & vbCrLf & "Bitte prüfen Sie Ihre Eingaben.", _
            vbExclamation, "Achtung!"
        PflichtfeldercheckH = False
     End If


End Function

database

Hallo,

die Frage nach dem Zugriff auf Steuerelemente in Unterformularen kommt relativ oft vor.
Daher gibt es in der FAQ von Karl Donaubauer einen guten Beitrag:

www.donkarl.com?FAQ4.2

Unbedingt den Link in diesem Beitrag beachten
Bei Dev Ashish findet sich eine tolle Erkärung zu diesem Thema

HTH

Peter

gats1966

danke, das hatte ich auch nachgelesen und die entsprechende Zeile eingefügt, aber das funktioniert nicht: (siehe kommentierte Zeile, Case 112):

Private Function PflichtfeldercheckH()

Dim ctl As Control
Dim AnzahlFehler As Integer

AnzahlFehler = 0

For Each ctl In Form_Hauptformular.Controls
If (ctl.Tag) = "Pflichtfeld" Then

Select Case ctl.ControlType
                Case 105:    'Auswahlrahmen
                    If IsNull(ctl.Value) Then AnzahlFehler = AnzahlFehler + 1
                Case 109:    'Textfeld
                    If IsNull(ctl.Value) Or Len(Nz(ctl.Value, "")) = 0 Then AnzahlFehler = AnzahlFehler + 1
                Case 110, 111:   'Listenfeld und Kombinationsfeld
                    If IsNull(ctl.Value) Then AnzahlFehler = AnzahlFehler + 1
                'Case 112:
                'If IsNull(Formulare![Hauptformular]![cmb_Kontaktart].Formular![Beratungsthemen]).Value = 0 Then AnzahlFehler = AnzahlFehler + 1

End Select
        End If
    Next
    If AnzahlFehler = 0 Then
        PflichtfeldercheckH = True
        DoCmd.GoToRecord , , acNewRec
    Else
        MsgBox "Es wurden nicht alle Pflichtfelder ausgefüllt!" & vbCrLf & "Bitte prüfen Sie Ihre Eingaben.", _
            vbExclamation, "Achtung!"
        PflichtfeldercheckH = False
     End If


End Function

lumbumba

Hallo,

ich verwende meistens folgende Syntax wenn ich von einem Hauptformular auf ein Control im Ufo zugreifen will

Me.Controls("Name des Controls im HF").Form.Controls("Name des Controls im UFO")
---

database

Hallo,

du befindest dich im VBA - Code, da gibt es kein 'Formulare', daher statt

If IsNull(Formulare![Hauptformular]![cmb_Kontaktart].Formular![Beratungsthemen]).Value

If IsNull(Forms![Hauptformular]![cmb_Kontaktart].Form![Beratungsthemen]).Value

.... ist cmb_Kontaktart der Name deines Unterformulars? 

Versuch mal....

HTH

Peter

gats1966

vielen Dank habe ich probiert, es heisst dann immer "ungültiger Bezeichner" für isnull.

Nun habe etwas anderes probiert. Statt einen zusätzlichen "Case" für das Unterformular (da das mit dem isnull so nicht klappt) zu definieren, lasse ich  im Unterformular auch alle Controls mit "For usw."durchlaufen und erst dann geht es weiter. HAt zumindest gerade funktioniert. Lieben Dank und noch ein schönen Abend.

DF6GL

Hallo,

so klappt es mit dem UFO:

If IsNull(Formulare![Hauptformular]![cmb_Kontaktart].Formular![Beratungsthemen]) Then


die IsNull-Funktion hat keine Value-Eigenschaft....


bzw.:

If Nz(Formulare![Hauptformular]![cmb_Kontaktart].Formular![Beratungsthemen],0) = 0 Then AnzahlFehler = AnzahlFehler + 1

wenn ein Ersatzwert gebraucht wird.