Ms access acDialog窗体不可见后,ms Access最终在退出时抛出错误

Ms access acDialog窗体不可见后,ms Access最终在退出时抛出错误,ms-access,Ms Access,我的Access客户端中有一个搜索结果表单,它使用了在acDialog模式下打开表单的技巧。如果用户取消搜索,则表单会自动关闭;如果用户选择了其中一个搜索项,则表单会将结果写入未绑定字段,然后使其自身不可见 调用代码将挂起(由于acDialog模式),直到上一段中描述的两个事件之一发生。调用代码检查表单是否仍在加载-当它知道已请求搜索项时,因此它从表单检索该项,然后将其关闭。如果表单尚未加载,我们假定选择了取消路由 搜索结果数据源是一个select语句“select*FROM details O

我的Access客户端中有一个搜索结果表单,它使用了在acDialog模式下打开表单的技巧。如果用户取消搜索,则表单会自动关闭;如果用户选择了其中一个搜索项,则表单会将结果写入未绑定字段,然后使其自身不可见

调用代码将挂起(由于
acDialog
模式),直到上一段中描述的两个事件之一发生。调用代码检查表单是否仍在加载-当它知道已请求搜索项时,因此它从表单检索该项,然后将其关闭。如果表单尚未加载,我们假定选择了取消路由

搜索结果数据源是一个select语句
“select*FROM details ORDER BY…”

这个技巧在代码中已经使用了一段时间,其中“details”是一个链接到另一个Access数据库的表

我正在移植到SQL Server,详细信息表现在在启动时动态链接到正确的SQL Server实例。使用以下连接字符串

ODBC;driver=SQL Server;SERVER=ROO\SQLEXPRESS;DATABASE=Test_DB;UID=my_app;PWD=xxxx;
(更改密码等以保护无辜者)

当Access退出应用程序时(并且只有在那时)-如果通过代码的路径导致使用visible=false技巧,那么它将退出并显示错误消息。如果存在一个应用程序出口,其中路径已通过搜索表单,但表单在返回前自行关闭,则不会出现错误消息

错误消息是:

Cannot access database because of Error [Microsoft][ODBC Driver Manager] Data source 
name not found and no default driver specified
现在将退出


我需要准确地找出发生这种情况的原因并加以制止。

我通过一个变通办法解决了这个问题。我为表单结果创建了一个全局变量,然后始终关闭搜索结果表单本身。试图获取结果的底层例程只使用全局变量


这证明了使对话框不可见以检索结果是不可靠的-问题在我更改它后就消失了。

有什么方法可以反向操作并在调用表单上填充未绑定的文本框?这样做有帮助吗?:)不容易-调用例程实际上在一个模块中-因此我可以向应用程序提供一个服务来执行此搜索。模块通常没有可以使用的表单。我可以创建一个并隐藏它来接收结果,但我更愿意找出这里发生了什么以及它抛出错误的原因。我确实找到了一种方法,就像你建议的那样-我不需要整个表单来获得返回结果-只需要一个全局变量就可以了。现在,我的应用程序没有出现错误就退出了-我最终发现了问题-这是我代码中的一个真正的错误。我将要关闭的表单命名错误,因此它从未关闭