我知道只有足够的编程才能让自己陷入严重麻烦。我正在建立一个数据库,我想在该数据库中运行一个每次都执行相同功能的函数。唯一的问题是按钮以各种形式出现。我知道我需要使用 public 功能。我设法使该函数在一个表单上作为 private 子函数工作,但是当我将其移至模块并变成 public 函数时,它给了我一个错误。它指出我输入的表达式没有价值。我怀疑问题出在第一个表格(各种表格)和第二个表格(对数备注行表格)之间。

在每种形式中, public 链接是HL#(交易ID#)。 HLCtrl引用一种形式(各种父形式)上的文本框控件。 [HL#]指[记录备注行]表单中的文本框控件。我的另一个问题是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

最佳答案

我认为这是DoCmd.OpenForm "Log-Memo Line", acNormal, "", "[HL#]=" & "'" & HLCtrl & "'", , acNormal
您正在打开表单并根据HL#= HLCtrl对其进行过滤。假设HLctrl是您的一种表单上的控件(表单需要打开并在其中有一个值才能正常工作),我要么将其作为参数传递给函数,要么如果您始终要调用此功能在打开带有hlctrl的表单时,可以通过其全名来引用hlctrl:[Forms]![yourFormThatYouWantToSelectaHLNumber]![hlctrl]
如果您从包含控件HLctrl的表单中调用此代码,则无需使用全名,而只需说HLCtrlMe.HLctrl即可。由于您是从位于表单对象外部的 public 函数调用它的,因此需要告诉它查找HLCTRL的表单

DoCmd.OpenForm "Log-Memo Line", acNormal, "", "[HL#]=" & "'" & [Forms]![yourFormName]![HLCtrl] & "'", , acNormal
另外,如果是数字,则可能不需要将其用单引号引起来。

08-05 14:49