首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何查看Access DoCmd.OpenForm运行的SQL语句

如何查看Access DoCmd.OpenForm运行的SQL语句
EN

Stack Overflow用户
提问于 2016-12-22 23:32:51
回答 2查看 1.1K关注 0票数 1

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

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

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

我尝试过ODBC跟踪,但它没有显示任何内容。由于应用程序与Server后端对话,我可能可以让我们的DBA启动跟踪,但这并不是一个很好的选择,因为应用程序是巨大的,并且这个场景以许多形式存在,而且我不确定它会捕获任何东西。任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-22 23:59:19

WhereCondition参数DoCmd.OpenForm是窗体记录源的附加 WHERE子句。或者一个额外的过滤器,但是您想要调用它。

例如,如果表单记录源是

代码语言:javascript
复制
SELECT * FROM Projects WHERE PrjStatus = 1

WhereCondition

代码语言:javascript
复制
ProjectNumber = Me![ProjectNumber]

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

代码语言:javascript
复制
SELECT * FROM Projects WHERE PrjStatus = 1 AND ProjectNumber = Me![ProjectNumber]
票数 1
EN

Stack Overflow用户

发布于 2016-12-23 01:32:06

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

代码语言:javascript
复制
A base table name
A saved query
Have embedded sql right in the data source.

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

例如:

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

在上面,你可以击中小的..。按钮(当您将光标放入数据源并显示查询生成器时会出现该按钮。例如:

从上面,您可以通过选择上面所示的sql来切换到SQL视图。

结果是:

因此,通常没有为表单指定SQL或查询,而只有基表。(因此,如果Access要求您调用查询生成器,请确保回答否!),因为如果继续,您将对应用程序进行更改,并将表单数据源更改为表单的嵌入式查询。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41293170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档