
[英]VBA - Automation Error, server threw an exception, Lotus Notes Automation Code
[英]“Out of Memory” error in Lotus Notes automation from VBA
此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
为了说明这一点,Access查询正在调用此VBA函数,每条记录3-4次,有20,000条记录。 出于性能原因,NotesSession已设置为静态。 有什么想法为什么会偶尔出现内存不足错误吗?
(此外,我正在启动NotesSession,以便可以使用Lotus的规则将日期时间转换为GMT。如果您知道更好的方法,我在听)。
按照罗斯先生的问题,我隔离了(或认为我做了)查询及其支持功能。 在尝试您的建议之前,我先添加了一些参数来确定崩溃的行和字段。 我运行了几次,它在第一行的第一个字段上崩溃了。
然后就说吧! 一切都很好。 所以我试图回溯看看我做了什么。 找不到任何东西。 我什至回到原始查询,该查询始终失败,并且发现一切都运行良好,即使没有任何变化(或我认为如此)。
因此,我无法尝试您的建议,但我仍然学到了一些东西。 这真让我讨厌。 此功能可能与其他某些Notes进程冲突吗?
(另一件事。这不可能是硬件/内存问题。这台机器是具有2GB RAM的双核。)
这确实占用了我太多的时间。 我决定只对日期进行硬编码。 罗斯先生,您的链接看起来像是一个坚实的,功能齐全的功能,但是我现在没有时间检查逻辑了。 我改用以下方法:(效果比我预期的要好。我期望会有更多差异)
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
当您将其NtSession从静态更改为在每次调用函数时进行设置,然后在函数末尾设置为空时,会发生什么?
我知道这会影响性能,但请试一试,看看会发生什么并发回
编辑:
您对转换为GMT的评论让我开始思考,此功能有什么好处吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.