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
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 (http://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
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
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")
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
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.
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.