来自VBA的Lotus Notes自动化中的“Out of Memory”错误

时间:2010-04-27 13:39:26

标签: vba lotus-notes

此VBA函数偶尔会因Notes自动化错误“运行时错误'7'内存不足”而失败。当然,当我尝试手动重现它时,一切运行正常。

Function ToGMT(ByVal X As Date) As Date
    Static NtSession As NotesSession
    If NtSession Is Nothing Then
        Set NtSession = New NotesSession
        NtSession.Initialize
    End If
(do stuff)
End function

要将其置于上下文中,此VBA函数由Access查询调用,每条记录3-4次,具有20,000条记录。出于性能原因,NotesSession已经变为静态。有什么想法为什么偶尔会出现内存错误?

(另外,我正在启动NotesSession,因此我可以使用Lotus的规则将日期时间转换为GMT。如果你知道更好的方法,我正在听)。

修改

根据罗斯先生的问题,我孤立(或认为我做过)查询及其支持功能。在我尝试你的建议之前,我首先添加了一些参数来确定哪一行和一行。它崩溃了。我跑了几次然后撞到了第一排的第一个区域。

然后presto!一切都很顺利。所以我试图回溯看看我做了什么。找不到任何东西。我甚至回到原始查询,它始终如一地失败,发现一切都运行正常,即使没有任何改变(或者我认为)。

所以,我无法尝试你的建议,但我仍然学到了一些东西。这真让我烦恼。这个功能可能与其他一些Notes流程冲突吗?

(另外一件事。它不能是硬件/内存问题。这台机器是一个带有2GB RAM的双核。)

编辑#2

这真的占用了我太多的时间。我决定只对日期进行硬编码。 Ross先生,您的链接看起来像一个功能齐全,功能齐全的功能,但我没有时间检查逻辑了。以下是我的选择:(它比我想象的更好。我期待更多的差异)

Function ToGMT(ByVal X As Date) As Date
    'Ugly? Yes. A cheap hack? Yes. 
    'But this method is fast and verifiable. So let's go with it.
    'Of course, if you're reading this in the year 2016, well, 
    'you should be able to figure out what to do.
    If X >= #4/2/2006 1:00:00 AM# And X <= #10/29/2006 3:00:00 AM# Or _
        X >= #3/11/2007 1:00:00 AM# And X <= #11/4/2007 3:00:00 AM# Or _
        X >= #3/9/2008 1:00:00 AM# And X <= #11/2/2008 3:00:00 AM# Or _
        X >= #3/8/2009 1:00:00 AM# And X <= #11/1/2009 3:00:00 AM# Or _
        X >= #3/14/2010 1:00:00 AM# And X <= #11/7/2010 3:00:00 AM# Or _
        X >= #3/13/2011 1:00:00 AM# And X <= #11/6/2011 3:00:00 AM# Or _
        X >= #3/11/2012 1:00:00 AM# And X <= #11/4/2012 3:00:00 AM# Or _
        X >= #3/10/2013 1:00:00 AM# And X <= #11/3/2013 3:00:00 AM# Or _
        X >= #3/9/2014 1:00:00 AM# And X <= #11/2/2014 3:00:00 AM# Or _
        X >= #3/8/2015 1:00:00 AM# And X <= #11/1/2015 3:00:00 AM# Then
            ToGMT = DateAdd("h", -1, X)
    Else
            ToGMT = X
    End If
End Function

1 个答案:

答案 0 :(得分:1)

当你在每次调用函数时将NtSession从静态更改为正在设置然后在函数末尾设置为空时会发生什么?

我知道这会伤害表现,但要试一试,看看会发生什么并回发

编辑:

关于转换为GMT的评论让我思考,这个功能会有什么好处吗?

http://www.vbaexpress.com/kb/getarticle.php?kb_id=813