2011-05-23 102 views
1

我有本地机器(即开发)和虚拟机(即生产)。在2之间,我使用Access,Excel和Lotus Notes开发并维护了一些自动报告。这段代码为什么会中断?

最近,我接到了一份与现有报告非常相似的新报告。所以,我只是将适当的Access文件从生产版本复制回开发版本来重写它。它失败了。对于一些试验&错误,我已经将范围缩小到这个片段:

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

同样,这个代码在制作精细,但当我尝试在我的发展运行,现在休息(我得到一个“类型不匹配“错误的CreateObject)。最简单的方法就是在Production中开发我的报告,但是这种方式无法达到目的,更不用说它曾经在我的本地机器上工作的奇怪现象,而现在却没有。那么,为什么这会在我的本地机器(即Dev)上抛出错误,而不是在虚拟(即生产)中?

+0

您是否尝试重置参考(取消选择参考并再次选择)? – Jacob 2011-05-23 15:40:01

回答

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") 
+0

这很有道理(尽管它会在下一行中引发错误)。但我的问题是,为什么它只能在一台机器上运行,而不能在另一台机器上运行?请记住,它曾经在两方面都工作得很好。 – PowerUser 2011-05-24 14:16:33

+0

在你的第二个建议中,它抱怨说我不能以这种方式使用“新建”。 – PowerUser 2011-05-24 14:18:34

0

检查COM对象nlsxbe.dll已正确安装和注册上你的开发机器。也许注销并重新注册它只是为了确保。做一个关于“nlsxbe.dll注册”的Google搜索,以获得更多与该模块有关的问题的提示,该模块应作为Notes客户端安装的一部分安装(但可能未注册)。