Problem beim referenzieren UFOs in Formular-Instanzen

05/06/2010 - 07:59 von Hugo | Report spam
ich starte aus einem Startformular heraus ein HauptFormular geichzeitig in
mehreren Instanzen um parallel Stammdaten anzuzeigen. Das funktioniert auch
schon ganz gut. In diesen Formularinstanzen befinden sich je ein Register mit
mehreren Seiten und Unterformularen mit Detailinformationen zu den jeweiligen
Stammdaten. Aus dem Hauptformular heraus kann ich auch ohne Probleme den
'RecordSource' der Unterformulare mit 'Me!Unterformular' referenzieren.
Wenn ich aber aus einem Unterformular heraus Felder oder den RecordSource
eines anderen Unterformulars mit Forms!HauptFormular!Unterformular!
ansprechen will bekomme ich die Fehlermeldung "Access kann das Formular
'HauptFormular' nicht finden". Schreibfehler ist es keiner, denn ich habe den
Namen des übergeordneten Formulares, in diesem Fall das Hauptformlar mit
'Me.Parent.Name' kontrolliert.
Ich vermute, dass die Referenzierung mit Forms! bei einer Instanz nicht das
richtige ist.

Dazu habe ich ein Testprogramm mit dem gleichen Effekt geschrieben, mit dem
ich die Ursache für das Problem, leider ohne Erfolg, finden wollte.

der Starter für die Instanzen: 'frm_StartInstanz'
Code:
Option Compare Database
Option Explicit

Private Sub Befehl0_Click()
Dim frm As Form_frmHaupt

Set frm = New Form_frmHaupt
'Festlegen, das das Formular nach Terminierung von frm geöffnet bleiben
soll
frm.StayOpen = Nz(True, False)
frm.Visible = True
'frm.Name = "frmHaupt"
MsgBox "frm.Name=" & frm.Name
Set frm = Nothing '... jetzt wird frmTest geschlossen, falls StayOpen =
false
End Sub
das instanzierte Hauptformular 'frmHaupt':
Code:
Option Compare Database
Option Explicit

Private m_FormInstance As Form_frmHaupt

Public Property Get StayOpen() As Boolean
StayOpen = Not (m_FormInstance Is Nothing)
End Property


Public Property Let StayOpen(ByVal bStayOpen As Boolean)
If bStayOpen Then
If m_FormInstance Is Nothing Then
Set m_FormInstance = Me
End If
Else
If Not (m_FormInstance Is Nothing) Then
Set m_FormInstance = Nothing
End If
End If
End Property

Private Sub Form_Load()
Me!Text1 = Forms!StartInstanz!Text6
Me!frmU1!Text0 = Me!Text1
Me!frmU2!Text0 = Me!Text1
Set m_FormInstance = Me
Me.Detailbereich.BackColor = RGB(0, 0, 1)
MsgBox "Formular wird geöffnet"
End Sub

Private Sub Befehl0_Click()
If m_FormInstance Is Nothing Then
'per DoCmd schließen
DoCmd.Close acForm, Me.Name
Else 'nur Insatz killen
'DoCmd.Close
Set m_FormInstance = Nothing
End If
End Sub

Private Sub Form_Close()
If Not (m_FormInstance Is Nothing) Then
Set m_FormInstance = Nothing
End If
MsgBox "Formular wird geschlossen"
End Sub

Private Sub Form_Unload(Cancel As Integer)
If Not (m_FormInstance Is Nothing) Then
Cancel = (MsgBox("Formular schließen?", vbYesNo) = vbNo)
End If
End Sub
2 UFos: frmU1 und frmU2 mit je einem Textfeld
Im UFO1 will ich nun das Textfeld des 2 UFOs mit dem Wert des 1. UFOs
belegen:
Code:
Forms!frmHaupt!frmU2!Text0 = Me!Text0
und dann kommt die Fehlermeldung.


Mit Me.frmU2.Form.Text0 = Me.Text0 habe ich es auch versucht, dann kommt die
Fehlermeldung 'Methode oder Datenobjekt nicht gefunden'

Was mach ich da falsch ?

Liebe Grüsse
Hugo
 

Lesen sie die antworten

#1 Ekkehard Böhme
06/06/2010 - 16:41 | Warnen spam
Hallo Hugo,

Hugo schrieb:
ich starte aus einem Startformular heraus ein HauptFormular geichzeitig in
mehreren Instanzen um parallel Stammdaten anzuzeigen. Das funktioniert auch
schon ganz gut. In diesen Formularinstanzen befinden sich je ein Register mit
mehreren Seiten und Unterformularen mit Detailinformationen zu den jeweiligen
Stammdaten. Aus dem Hauptformular heraus kann ich auch ohne Probleme den
'RecordSource' der Unterformulare mit 'Me!Unterformular' referenzieren.
Wenn ich aber aus einem Unterformular heraus Felder oder den RecordSource
eines anderen Unterformulars mit Forms!HauptFormular!Unterformular!
ansprechen will bekomme ich die Fehlermeldung "Access kann das Formular
'HauptFormular' nicht finden". Schreibfehler ist es keiner, denn ich habe den
Namen des übergeordneten Formulares, in diesem Fall das Hauptformlar mit
'Me.Parent.Name' kontrolliert.
Ich vermute, dass die Referenzierung mit Forms! bei einer Instanz nicht das
richtige ist.




<schnipp>


Mit Me.frmU2.Form.Text0 = Me.Text0 habe ich es auch versucht, dann kommt die
Fehlermeldung 'Methode oder Datenobjekt nicht gefunden'

Was mach ich da falsch ?



Schau Mal, ob Dir dies weiterhilft:
http://www.donkarl.com/?FAQ4.2

Lies auch http://www.donkarl.com/?FAQ6.3

hth
ekkehard

Ähnliche fragen