Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba MS Access在试图关闭与Blackbaud的连接时崩溃;s Raiser';s边缘API_Vba_Ms Access_Blackbaud - Fatal编程技术网

Vba MS Access在试图关闭与Blackbaud的连接时崩溃;s Raiser';s边缘API

Vba MS Access在试图关闭与Blackbaud的连接时崩溃;s Raiser';s边缘API,vba,ms-access,blackbaud,Vba,Ms Access,Blackbaud,我是一个非营利组织的IT部门。今天我有一个问题,可能对这个论坛来说太专业了,我希望我不要浪费时间把它写出来。我们正在使用Blackbaud的“Raiser's Edge”(RE)软件(据我所知,该软件是用VB6和VB.net编写的)来跟踪我们的会员和捐款情况。我们有一个MS Access应用程序(在我们重新注册之前就一直在使用它)来处理捐赠,现在我想保留它,只做一些小的更改来适应新的软件 MS Access程序现在正在对RE API进行一些调用,这些调用非常有效。要登录并建立连接,我必须创建一个

我是一个非营利组织的IT部门。今天我有一个问题,可能对这个论坛来说太专业了,我希望我不要浪费时间把它写出来。我们正在使用Blackbaud的“Raiser's Edge”(RE)软件(据我所知,该软件是用VB6和VB.net编写的)来跟踪我们的会员和捐款情况。我们有一个MS Access应用程序(在我们重新注册之前就一直在使用它)来处理捐赠,现在我想保留它,只做一些小的更改来适应新的软件

MS Access程序现在正在对RE API进行一些调用,这些调用非常有效。要登录并建立连接,我必须创建一个新的“REAPI”对象,并将其用于其他API调用。
REAPI
对象有一个名为:
SignOutOnTerminate
的方法,创建该对象时需要将该方法设置为TRUE。它应该在我的应用程序关闭后关闭所有与RE的连接。没有常规的
.close
方法

一旦我创建了这个对象,我就可以做我想做的任何事情,就我所能看到的而言,根本没有问题

但是,当尝试关闭应用程序或将对象设置为nothing(无)时(
set REAPI=nothing
),Access会立即崩溃(它会消失,并且我收到一条消息,Windows正在寻找问题的解决方案。然后Access会关闭并重新启动。)

这比妨碍生产更烦人和不专业,但我想解决它

该应用程序是在64位Windows 7和32位Access 2010上开发的。它是在WindowsXP和Office2003或2007机器(32位)上测试的,其行为方式相同

我已经在2个Blackbaud论坛上发布了这个问题,并尝试了一个建议的解决方法,但没有成功(使用shell命令终止进程,然后将对象设置为nothing)。希望我能很快得到更多的答案

我试图在创建对象时排除
SignOutOnTerminate
。但他们也有同样的行为

我查看了事件管理器-->应用程序日志,发现了崩溃。报告称,访问因以下dll而崩溃:C:\Windows\System32\MSVBVM60.dll(它实际上位于SysWos64文件夹中,因为它是一个32位应用程序)

查找此错误时,我发现了一些建议,可以用XP附带的早期版本的dll替换它。我找到一个文件并尝试了这个建议,但还是失败了。错误日志将旧版本号报告为错误,因此我正确注册了它

我还为Blackbaud创建了一个案例,但该代表不知道问题出在哪里,并且没有安装MS Access。他正试图让他的支持团队为他安装它,以便他能够测试和调查这个错误

我最后的怀疑是API导致了错误,而我的代码很好

但是在我做出这个假设之前,在我从Blackbaud那里得到我的答案之前,我想做一个最后的检查,但是我已经没有了进一步解决问题的想法,于是在这个论坛上提出了这个问题


有什么想法吗?

我意识到这是一条古老的线索,如果你现在已经解决了这个问题,那就太好了。然而,这是Raiser的edgeapi的一个已知问题。如果您将.NET与RE的API(基于COM)一起使用,肯定会有一些资源未正确清理。在某一点上,我怀疑这与使用RE的图形界面有关,即通过调用常规登录方法将您登录到RE。但是,即使您登录以重新使用提供用户名和密码的“作为服务器”方法,它仍然会在退出应用程序时崩溃


我们有一个在RE中设置凭据的安装程序。安装程序位于.NET中并访问RE API。我们现在在应用程序结束前显示一条消息,告诉用户忽略即将发生的崩溃。。。无论如何,这不是一个很好的解决方案。

在我看来,Blackbaud的“Raiser's Edge”(RE)软件没有正确清理资源。SignOutOnTerminate:在我看来,当对象终止时,他们会注销。在.NET中,垃圾收集器会终止对象,但在VBA中没有垃圾收集器,因此终止行为不同。如果API有一个显式的.close方法会更好谢谢@zeiddev对我的怀疑的确认。我希望Blackbaud会在某个时候解决这个问题。