【问题标题】:Linking vba modules in MS Access 2007在 MS Access 2007 中链接 vba 模块
【发布时间】:2014-08-03 14:12:24
【问题描述】:

我正在将数据库系统从 Access 2000 db 升级到 Access 2007,该系统通过 RS 232 串行端口与多个化学测量设备(pH 计、天平等)进行通信。第一个数据库由几个包含 vba 代码的模块组成,这些模块可以与端口进行通信,并支持第二个数据库中表单背后的代码。用户或实验室技术人员浏览第二个数据库中的表单以与实验室设备进行交互,并生成显示信息的报告。从设备。这些报告也是第二个数据库的一部分。该代码在 Access 2000 中工作,但一旦我将其转换为 2007,第二个数据库中的代码无法在第一个数据库中找到指示从屏幕到屏幕的进程的函数调用。我尝试将模块导入第二个数据库,并尝试链接它们,但它仍然不起作用。错误消息是 #438:“对象不支持此属性或方法。”任何建议将不胜感激。

这里是第一个没有被正确调用的函数的代码:

Description:
' This routine is used to return to the calling form and close the active form.
'
' Input:
' strFormCalled     ---  the active form
' strCallingForm    ---  the form that called the active form
' blnUnhideOrOpen   ---  whether to open or just unhide form

Public Sub basReturnToCallingForm(ByVal strFormCalled As String, ByVal _ 
    strCallingForm As Variant, Optional blnUnhideOrOpen As Boolean = True)

On Error GoTo err_basReturnToCaliingForm

    If Not basIsBlankString(strCallingForm) And blnUnhideOrOpen Then
        DoCmd.OpenForm strCallingForm, acNormal
    Else
        Call basUnHideForm(strCallingForm)
    End If

Call basCloseForm(strFormCalled)

exit_basReturnToCaliingForm:
    Exit Sub
err_basReturnToCaliingForm:
    Err.Raise Err.Number, "basReturnToCaliingForm", Err.Description
End Sub

我将很快发布第二个函数,但我必须去开会...第二个不“工作”的函数是 cmdStartClick,它应该在用户初始化泵时调用。但是,在该函数中,它还停留在应该进入 db 中下一个表单的行上。另一件事是代码在Access 2002中有效,但在Access 2007中无效...

这是程序不断阻塞的第二段代码:

Private Sub cmdClose_Click()

On Error GoTo err_cmdCloseClick

    Call basReturnToCallingForm(Me.Name, m_strCallingForm, False)

exit_cmdCloseClick:
    Exit Sub
err_cmdCloseClick:
    MsgBox basGetString(g_clngUnexpectedError, Err.Number, "cmdCloseClick", _  
    Err.Description), vbCritical, "Unexpected Error"
Resume exit_cmdCloseClick
End Sub

我已经检查了参考资料,据我所知,所有需要的内容都包含在内。自从我上次发布以来,我们已经能够让程序在 Access 2002 中运行,但我们仍然没有在 Access 2007 中遇到任何运气......

2010 年 6 月 14 日更新:

所以...在用作与电子泵交互的 GUI(在化学实验室中分配化学品)的表单的设计视图中,应该嵌入一个 ActiveX 对象。它不见了。但是,当我尝试重新插入它时,我收到消息:“OLE 服务器未注册。要注册 OLE 服务器,请重新安装它。”但是,我已经为 RS232 端口重新安装了更新的驱动程序,但仍然收到相同的消息。简而言之,Access 不会让我插入表单需要的 ActiveX 控件。这就是我周一早上 8:30 EST 所在的位置。如果有人有建议,...我已经准备好完成这个项目了!

【问题讨论】:

  • 你能把导致错误的那一行和它周围的一些代码贴出来吗?
  • 两个数据库都在受信任的位置吗?
  • OP 注释“我已尝试将模块导入第二个数据库......但它仍然无法正常工作”,这意味着它不是数据库位置的问题。
  • 大多数有经验的 Access 开发人员会尽可能避免使用所有 ActiveX 控制,因为它们很容易出现您所描述的问题。您没有提供有关目标操作系统的详细信息,但这可能是权限问题,尤其是在您使用 Vista/Win7 时。如果我需要做串口工作,我会使用 Tony Toews 的代码:granite.ab.ca/access/serialport.htm——它通过直接通过相关的 Windows API 来避免 ActiveX 问题。

标签: ms-access-2007


【解决方案1】:

事实证明,我必须注册所需的 ActiveX 控件,这在 Access 2007 中的做法有些不同。如果有人感兴趣,请点击此处的链接。我使用了方法 2。感谢 cmets 的帮助。 http://support.microsoft.com/kb/918574

【讨论】:

    【解决方案2】:

    在 VBA 代码编辑器中检查 Tools->References 并查看是否有任何标记为 MISSING。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-24
      • 2019-10-23
      • 2013-04-18
      • 1970-01-01
      相关资源
      最近更新 更多