【问题标题】:MS Access 2007 Public Function for button used on various formsMS Access 2007 用于各种表单的按钮的公共功能
【发布时间】:2013-05-16 03:53:43
【问题描述】:

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

【问题讨论】:

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


    【解决方案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

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

    【讨论】:

    • 这也是我所怀疑的。现在我的问题是如何重新编码以使用参数。这就是我的编码教育失败的地方。我假设参数需要列出整个控件名称,即 [Forms]![Form1]![HLCtrl] 或 [Forms]![Form2]![HLCtrl] 等。主要形式(Form1、Form2 或 Form3)按下按钮时将始终打开。
    • 好吧,如果它总是来自该表单的控件,那么您不需要参数,您可以直接引用该控件。否则,您将在函数定义中将参数放在括号中,例如 public function memo_line (yourHL as Integer),并且您将在表单上的事件中调用该函数,例如 call memo_line(me.HLCtrl),而不是在函数中引用控件,而是引用 yourHL传入函数的变量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-29
    相关资源
    最近更新 更多