我知道足够的编程让自己陷入严重的困境。我正在构建一个数据库,我想运行一个每次执行相同操作的函数。唯一的问题是按钮出现在各种表格上。我知道我需要使用公共功能。我设法让函数在一个表单上作为私有子工作,但当我将它移动到一个模块并使其成为一个公共函数时,它给了我一个错误。它声明我输入了一个没有价值的表达式。我怀疑问题是第一种形式(各种形式)和第二种形式(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
答案 0 :(得分:1)
我认为它就在这一行DoCmd.OpenForm "Log-Memo Line", acNormal, "", "[HL#]=" & "'" & HLCtrl & "'", , acNormal
您正在打开表单并根据HL#= HLCtrl
对其进行过滤。假设HLctrl
是你某个表单上的一个控件(表单需要打开并且有一个值可以使其工作),我会将它作为参数传递给你的函数,或者如果你当hlctrl
的表单打开时,总是会调用此函数,您可以通过它的全名来引用hlctrl
:[Forms]![yourFormThatYouWantToSelectaHLNumber]![hlctrl]
如果您从包含控件HLctrl
的表单调用此代码,则无需使用全名,您可以说HLCtrl
或Me.HLctrl
。由于您是从位于表单对象外部的公共函数调用它,您需要告诉它查找哪个表单来查找HLCTRL
赞DoCmd.OpenForm "Log-Memo Line", acNormal, "", "[HL#]=" & "'" & [Forms]![yourFormName]![HLCtrl] & "'", , acNormal
另外,如果它是一个数字,你可能不需要用单引号括起来。