为什么这段代码破了?

时间:2011-05-23 15:20:14

标签: ms-access lotus-notes ms-access-2003

我有本地机器(即开发)和虚拟机(即生产)。在2之间,我使用Access,Excel和Lotus Notes开发和维护一些自动报告。

最近,我的任务是一份与现有报告非常相似的新报告。所以,我只是将生产中相应的Access文件复制回Development,然后重新编写它。它失败了。通过一些试验和错误,我把它缩小到这个片段:

Option Compare Database
Option Explicit
Global NtSession As lotus.NotesSession
Sub Main()
    Set NtSession = CreateObject("Notes.NotesSession")
    ...
End Sub

同样,这段代码在Production中运行良好,但是当我尝试在我的开发中运行时它会中断(我在CreateObject上遇到“Type Mismatch”错误)。解决这个问题最简单的方法就是在Production中开发我的报告,但这种目的无法实现,更不用说它以前在本地机器上工作的奇怪之处,现在却没有。那么,为什么这会在我的本地机器(即Dev)上抛出错误,而不是在虚拟(即生产)中呢?

3 个答案:

答案 0 :(得分:2)

Lotus.NotesSession is not the same as Notes.NotesSession。您可能只需要将CreateObject行更改为:

Set NtSession = CreateObject("Lotus.NotesSession")

答案 1 :(得分:1)

根据Ken的回复,我建议您决定是否要延迟或早期绑定。

Global NtSession As Object
Set NtSession = CreateObject("Lotus.NotesSession")

Global NtSession As lotus.NotesSession
Set NtSession = New Lotus.NotesSession

我只是没有看到混合两者的价值,如

Global NtSession As lotus.NotesSession
Set NtSession = CreateObject("Lotus.NotesSession")

答案 2 :(得分:0)

检查COM对象nlsxbe.dll是否已在开发计算机上安装并正确注册。也许取消注册并重新注册它只是为了确定。请在Google上搜索“nlsxbe.dll注册”,以获取有关该模块的问题的更多提示,该模块应作为Notes客户端安装的一部分进行安装(但可能未注册)。