如何查看Access DoCmd.OpenForm

时间:2016-12-22 23:32:52

标签: vba ms-access

我的任务是将Access应用程序转换为.NET。我对Access一无所知。我的问题是我需要能够从表单中看到通过VBA调用的实际查询。

VBA代码使用名为DoCmd.OpenForm的命令打开表单并显示记录。 VBA代码位于按钮的事件处理程序中。单击时,该按钮使用DoCmd.OpenForm及其相关参数打开表单。根据MSDN,DoCmd.OpenForm中的第四个参数是WhereCondition,开发人员使用它来插入WHERE子句(每个MSDN没有WHERE字)。使用的WHERE子句是ProjectNumber = Me![ProjectNumber]

问题是我看不到查询的其余部分,即整个SELECT语句是什么以及Access如何知道选择哪些字段来填充DoCmd.OpenForm命令打开的表单?反正有没有找到它?为了增加混淆,DoCmd.OpenForm打开的目标表单具有与之关联的自己的查询。换句话说,如果表单在设计模式下打开,则在Data - > Record Source下,它会列出一个查询。我可以看到该查询的语法,而不是" partial"使用DoCmd.OpenForm命令从VBA代码调用的一个。似乎有两个不同的查询用于填充目标表单。

我尝试过ODBC跟踪,但没有显示任何内容。由于应用程序与SQL Server后端进行通信,我可能可以让我们的DBA开启跟踪,但这不是一个很好的选择,因为应用程序很大并且这种情况以多种形式存在而且我不确定它甚至会抓到任何东西。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

WhereCondition的{​​{1}}参数是表单记录源的附加 WHERE子句。或者是一个额外的过滤器,但是你想要调用它。

E.g。如果表格记录来源是

DoCmd.OpenForm

SELECT * FROM Projects WHERE PrjStatus = 1

WhereCondition

然后打开表单的实际SELECT语句将是

ProjectNumber = Me![ProjectNumber]

答案 1 :(得分:1)

表单可能基于查询,也可能不基于查询。通常使用基表名称。 因此表单数据源可以是:

Error

要查看给定表单的基础数据源,请在设计模式下打开表单,显示属性表(如果尚未显示属性表,则只需按alt-enter键。在数据选项卡中,您可以看到数据源:

例如:

enter image description here

上述源名称可以是基表,已保存查询的名称,甚至是该记录源中的原始sql,如下所示:

enter image description here

在上面,您可以点击小按钮(当您将光标放入数据源时会出现,并显示查询构建器。例如:

enter image description here

从上面开始,您可以通过选择SQL来转到sql视图,如上所示。

结果如下:

enter image description here

所以OFTEN没有为表单指定SQL或查询,只有基表。 (因此,如果Access要求您调用查询构建器,请确认您没有答案!,因为如果您继续,那么您正在更改应用程序并将表单数据源更改为表单的嵌入式查询。

但是在所有情况下,openform命令的“where”子句都作为过滤器添加到数据源中。如果sql已经有了一个where子句,那么就将它们组合在一起(就像在SQL服务器视图上使用sql select + where那样)