3

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

在每种形式中,公共链接是 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
4

1 回答 1

1

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

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

如果您从包含 control 的表单中调用此代码,则HLctrl无需使用全名,只需说HLCtrlor Me.HLctrl。由于您是从位于表单对象之外的公共函数调用它,因此您需要告诉它要查找 HLCTRL 的表单

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

此外,如果它是一个数字,您可能不需要将其用单引号括起来。

于 2013-05-15T19:53:43.510 回答