我正在将数据库系统从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 ...
更新6/14/10:
所以......在作为与电子泵交互的gui(用于在化学实验室中分配化学品)的形式的设计视图中,应该嵌入一个ActiveX对象。它不见了。但是,当我尝试重新插入它时,我收到消息:“OLE服务器未注册。要注册OLE服务器,请重新安装它。”但是,我重新安装了RS232端口的更新驱动程序,我仍然收到相同的消息。简而言之,Access不会让我插入表单所需的ActiveX控件。所以这就是我在周一早上8:30到达的地方。如果有人有建议,......我已准备好完成这个项目!
答案 0 :(得分:2)
事实证明我必须注册我需要的ActiveX控件,这在Access 2007中有点不同。如果有人感兴趣的话,这是链接。我使用方法2.感谢您的帮助。 http://support.microsoft.com/kb/918574
答案 1 :(得分:1)
在VBA代码编辑器中,检查工具 - >参考,并查看是否有任何标记为MISSING。