MS Access 2007 Public Function for各种表单上使用的按钮

时间:2013-05-15 19:43:19

标签: ms-access ms-access-2007 access-vba

我知道足够的编程让自己陷入严重的困境。我正在构建一个数据库,我想运行一个每次执行相同操作的函数。唯一的问题是按钮出现在各种表格上。我知道我需要使用公共功能。我设法让函数在一个表单上作为私有子工作,但当我将它移动到一个模块并使其成为一个公共函数时,它给了我一个错误。它声明我输入了一个没有价值的表达式。我怀疑问题是第一种形式(各种形式)和第二种形式(Log-Memo Line Form)之间的联系。

在每种形式中,公共链接是HL#(交易ID#)。 HLCtrl指的是一个表单上的文本框控件(各种父表单)。 [HL#]是指[Log-Memo Line]表单中的文本框控件。我的另一个问题是HLCtrl控件具有不同形式的不同名称。我应该将控件重命名为同名吗?

这是代码

Public Function Memo_Line()
On Error GoTo Memo_Line_Err

    Call saver
    DoCmd.OpenForm "Log-Memo Line", acNormal, "", "[HL#]=" & "'" & HLCtrl & "'", , acNormal
    Call ClipBoard_SetData([Forms]![Log-Memo Line]![Memo])
    MsgBox ([Form_Log-Memo Line].[Memo] & "---- copied to Clipboard."), vbInformation, "Clipboard Details"
    DoCmd.Close acForm, "Log-Memo Line"

Memo_Line_Exit:
    Exit Function

Memo_Line_Err:
    MsgBox Error$
    Resume Memo_Line_Exit

End Function

1 个答案:

答案 0 :(得分:1)

我认为它就在这一行DoCmd.OpenForm "Log-Memo Line", acNormal, "", "[HL#]=" & "'" & HLCtrl & "'", , acNormal

您正在打开表单并根据HL#= HLCtrl对其进行过滤。假设HLctrl是你某个表单上的一个控件(表单需要打开并且有一个值可以使其工作),我会将它作为参数传递给你的函数,或者如果你当hlctrl的表单打开时,总是会调用此函数,您可以通过它的全名来引用hlctrl[Forms]![yourFormThatYouWantToSelectaHLNumber]![hlctrl]

如果您从包含控件HLctrl的表单调用此代码,则无需使用全名,您可以说HLCtrlMe.HLctrl。由于您是从位于表单对象外部的公共函数调用它,您需要告诉它查找哪个表单来查找HLCTRL

DoCmd.OpenForm "Log-Memo Line", acNormal, "", "[HL#]=" & "'" & [Forms]![yourFormName]![HLCtrl] & "'", , acNormal

另外,如果它是一个数字,你可能不需要用单引号括起来。