Kenneth Ismert
kismert at gmail.com
Mon May 7 18:48:48 CDT 2012
> > John Clark: > ...and it is buggin' out on some pretty straight forward code. ...see > below... > ... > stDocName = "frmCriteria" > DoCmd.OpenForm stDocName, , , stLinkCriteria > Form_frmCriteria.DtStartDate.Visible = True > ... > *** It doesn't like the "Form_frmCriteria" part...back to the drawing > board. > John, Not surprising at all. The fact that that code worked before is entirely coincidental. Consider routine zTestFormNativeRef (below). Depending on the order that you run the form create commands, you will get 2 form instances, or just 1. Form_frmCriteria may refer to the form you opened with DoCmd, or it may not. You just can't be sure. A fix is to use code like this: Dim stDocName As String Dim rFrm As Form_frmCriteria stDocName = "frmCriteria" DoCmd.OpenForm stDocName, , , stLinkCriteria Set rFrm = Forms(stDocName) With rFrm .DtStartDate.Visible = True ' etc... End With By retrieving the named form reference, you are guaranteed to be working with what you intended. This works beautifully, unless you need multiple instances of frmCriteria open at one time. If that is the case, I really suggest dumping Access and moving to something like .NET. -Ken Public Sub zTestFormNativeRef() Const S_FORM As String = "frmCriteria" Dim sOut As String Dim rFrm As Access.Form ' this order creates 2 forms Form_frmCriteria.Visible = True GoSub ShowForms DoCmd.OpenForm S_FORM GoSub ShowForms ' this order creates 1 form ' DoCmd.OpenForm S_FORM ' GoSub ShowForms ' Form_frmCriteria.Visible = True ' GoSub ShowForms Debug.Print Debug.Print Form_frmTest Is Forms(0) If Forms.Count > 1 Then Debug.Print Form_frmTest Is Forms(1) End If Debug.Print ' closes a named form - order not guaranteed DoCmd.Close acForm, S_FORM GoSub ShowForms DoCmd.Close acForm, S_FORM GoSub ShowForms Exit Sub ShowForms: sOut = "Forms: " & Forms.Count & ":" For Each rFrm In Forms sOut = sOut & " " & rFrm.Name Next Debug.Print sOut Return End Sub