sql - DoCmd.OpenQuery 或 DoCmd.RunSQL

标签 sql vba ms-access

重新设计我的雇主数据库的某些部分时,我遇到了最初创建它的人编写的子例程,这些子例程是这样的:

DoCmd.OpenQuery "qry1"
DoCmd.OpenQuery "qry2"
DoCmd.OpenQuery "qry3"
DoCmd.OpenQuery "qry4"
DoCmd.OpenQuery "qry5"
DoCmd.OpenQuery "qry6"
DoCmd.OpenQuery "qry7"
etc...
etc.....
etc.......

我一直使用 DoCmd.RunSQL 在事件等后面运行查询,主要是因为 SQL 都在 VBA 编辑器中的一个位置在我面前。

目前一些程序有多达 50 个 OpenQuery 处理包含 250000 多条记录的表。简要浏览一下查询,似乎其中许多查询可以组合,因为它们对相同的数据集执行类似的操作,在我看来,编写它们的人对 SQL 的理解并不好。

我的问题是哪种方法在性能等方面更好。DoCmd.OpenQuery 或 DoCmd.RunSQL

最佳答案

如果这些是操作查询(UPDATEDELETEINSERT,而不仅仅是 SELECT),它真的没关系。 (在 Access 尝试收集输出记录以显示在网格中时,可能会有一些微小的开销。)

如果它们不是操作查询,那么 DoCmd.RunSQL 无论如何都不会做任何事情。

此外,请考虑使用 DoCmd.Execute 而不是 DoCmd.RunSQL,因为 Execute 可以使用保存的查询名称而不是原始 SQL。

关于sql - DoCmd.OpenQuery 或 DoCmd.RunSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34903766/

相关文章:

ms-access - 从网站上的表格中抓取数据,而无需搜索标签

vba - MS Access ODBC 与 PostgreSQL 表写入冲突

sql - 如何在sql数据库中所有表的所有列中搜索和替换字符串的一部分

sql - 如何使用 SQL 中包含开始和结束字段的表创建每日记录总和

SQL 2005 另一个基之间的外键

excel - 为什么这些列没有正确锁定?

vba - 打开Word文档运行时错误 '424' : Object required

ms-access - Microsoft access 只是一个文件或数据库服务器

ms-access - 我的数据库允许下拉列表中没有的数据,我该如何解决这个问题?

MySQL:无法添加或更新子行:引用 UID 时外键约束失败