访问公共功能窗体和控制参数


我设置了一个公共函数。它用于锁定日期控件并使其变灰,除非其相应的组合框控件设置为(绑定(值2。我把它作为一个公共函数,这样我就可以在窗体加载时、在当前时调用它,当窗体来回导航时以及当组合更改时,它都会触发。我还必须为2组成对的组合和日期控件执行此操作,因此将其包含在一个函数中可以在需要时更容易地调用任何表单/控件配对。

这是公共功能:

Public Function DateFieldStatus(frm As Form, fkctl As Control, dtctrl As Control)
'Combo Status Values
'ID Combo
'1 =  not ok
'2 =  ok
'3 =  not ok
Select Case frm.fkctl
Case 2
frm.dtctrl.Locked = False
frm.dtctrl.ForeColor = RGB(255, 255, 255)
Case Else
frm.dtctrl.Locked = True
frm.dtctrl.ForeColor = RGB(214, 214, 214)
End Select
frm.dtctrl.Requery
End Function

我把它设置为调用加载这样的主要形式:

Private Sub Form_Load()
If DCount("ID", "tblMainTable") = 0 Then
DoCmd.GoToRecord , , acNewRec
Else
DoCmd.GoToRecord , , acFirst
End If
Me.FirstControl.SetFocus
DateFieldStatus Me.Form, Me.FKDropDown1, Me.dtDateControl1
End Sub

当启动主窗体时,我得到以下错误:

运行时错误"2465":应用程序定义或对象定义错误

当我调试时,它突出显示了公共函数的这一行:

Select Case frm.fkctl

我想它不喜欢我把表单参数和控制参数组合在一起。

这不是你能做的事吗?

有更好的方法吗?

谢谢你的帮助!

frm.fkctl正在表单上查找名为"fkctl"的控件,但显然找不到。

您根本不需要将frm传递给函数——控件对象fkctl就足以寻址控件。

简单操作:

Select Case fkctl.Value

它会起作用的。

可以进行

frm(fkctl.Name)

但这会有点傻。

谢谢,我意识到我不需要声明表单。我声明了控件,当我调用函数时,表单就是。这是最终的解决方案:

公共功能-

Public Function SmokerStatus(fkctl As Control, dtctrl As Control)
Dim Msg, Style, Title, Response
'ID Combo
'1 =  not ok
'2 =  ok
'3 =  not ok
Msg = "You have changed the option status" & vbCrLf & _
"to a status that doesn't require an option date." & vbCrLf & _
"The corresponding option date has a value. " & vbCrLf & _
"If you would like to delete that date, click yes, otherwise click no, and we will undo."
Style = vbYesNo
Title = "Option Date Only Applies to PAST Option Status"
Select Case fkctl
Case 2
dtctrl.Locked = False
dtctrl.BackColor = RGB(255, 255, 255)
Case Else
If Nz(dtctrl, "") = "" Then
dtctrl.Locked = True
dtctrl.BackColor = RGB(214, 214, 214)
Else
Response = MsgBox(Msg, Style, Title)
If Response = vbYes Then
dtctrl.Value = ""
dtctrl.Locked = True
dtctrl.BackColor = RGB(214, 214, 214)
Else
fkctl.Undo
End If
End If
End Select
dtctrl.Requery
End Function

下面是一个称之为的例子

OptionStatus Me.FKOptionCombo, Me.dtOptionDate

希望这能帮助其他人。

最新更新