【发布时间】:2017-05-08 16:06:15
【问题描述】:
我的任务是将 Access 应用程序转换为 .NET。我对访问一无所知。我的问题是我需要能够看到通过 VBA 从表单调用的实际查询。
VBA 代码使用名为 DoCmd.OpenForm 的命令打开表单并显示记录。 VBA 代码位于按钮的事件处理程序中。单击时,该按钮使用 DoCmd.OpenForm 及其相关参数打开一个表单。 DoCmd.OpenForm 中的第四个参数是根据 MSDN 的 WhereCondition,开发人员使用它来插入 WHERE 子句(根据 MSDN,没有 WHERE 一词)。使用的 WHERE 子句是ProjectNumber = Me![ProjectNumber]。
问题是我看不到查询的其余部分,即整个 SELECT 语句是什么以及 Access 如何知道要选择哪些字段来填充 DoCmd.OpenForm 命令打开的表单?有没有办法找出来?更令人困惑的是,由 DoCmd.OpenForm 打开的目标表单有与之关联的自己的查询。换句话说,如果表单是在设计模式下打开的,在 Data-->Record Source 下,它会列出一个查询。我可以看到该查询的语法,而不是使用 DoCmd.OpenForm 命令从 VBA 代码调用的“部分”语法。似乎有两个不同的查询用于填充目标表单。
我尝试过 ODBC 跟踪,但没有显示任何内容。由于应用程序与 SQL Server 后端通信,我可以让我们的 DBA 打开跟踪,但这不是一个好选择,因为应用程序很大并且这种情况以多种形式存在,我不确定它会不会甚至抓到任何东西。非常感谢任何帮助。
【问题讨论】:
-
在布局或设计视图中打开表单。表单的属性包括一个数据选项卡。在该数据选项卡中查找表单的记录源。这应该会给你你正在寻找的东西。
-
下面两个很好的答案,但也要注意有更多的方法来操作表单的 SQL 记录源。检查 OnOpen、OnLoad 和 OnCurrent 事件。查看是否在调用表单之前设置了任何全局变量,或者是否使用了 OpenForm OpenArgs 参数。这表明更多信息被发送到表单,而不仅仅是打开它。