MS Access VBA:基于查询结果的 VBA 命令
Posted
技术标签:
【中文标题】MS Access VBA:基于查询结果的 VBA 命令【英文标题】:MS Access VBA: VBA command based on Query Result 【发布时间】:2015-08-26 02:24:30 【问题描述】:有什么方法可以将查询结果用作包含动态 sql 语句的 VBA 模块中的条件??
例如
if( count(user_id) from table > 0, THEN xport and send email to a,b,c)
我试图让条件依赖于特定的查询结果。所以如果某个查询有任何结果,我会让模块对结果做出反应。
我尝试的唯一另一种方法是从 EXCEL 查询数据库,并让 excel 的 VBA 对某个单元格的值做出反应(这将包含我试图访问的相同条件..但 id 而不是 STAY in access as尽可能多)
谢谢!
【问题讨论】:
当然有; Access 是一个桌面数据库,如果您无法在代码中从该数据中检索值,那么它将毫无用处。这是非常基本的东西,看来您应该找到一个 Access 教程来学习这些基础知识。 查看 Access 帮助系统中的 Application.DCount 方法 主题。 谢谢,我正在将 90% 的报告和知识功能转换到 Access,因此 VBA 转换对于我需要完成的时间表来说有点忙 - 等待我的书进来,我很感激现场帮助人们。 【参考方案1】:使用 DCount:
If DCount("*", "[table]") > 0 Then
' Insert code to export and send email to a,b,c.
Else
' Don't.
End If
【讨论】:
太棒了,我得到了相同的结果,但 vba 更多。我一直在使用 excel 并自动化查询特定表的宏,使用功能单元作为 VBA 之外的变量,这样编辑变量等速度要快得多。但是,我没有看到像上面的代码那样更快、更简单的东西。【参考方案2】:DCount 显然是访问 Access 的方式。如果您不在 Access 中,则需要创建一个记录集并测试其值
Sub TestRecordCount()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = New ADODB.Connection
cn.Open msCONNSTRING
Set rs = cn.Execute("SELECT COUNT(*) FROM table")
If rs.Fields(0).Value > 0 Then
'do stuff
End If
rs.Close
cn.Close
End Sub
由于记录集只返回一个记录一个字段,你可以测试.Fields(0).Value 看看表中有多少条记录。
【讨论】:
以上是关于MS Access VBA:基于查询结果的 VBA 命令的主要内容,如果未能解决你的问题,请参考以下文章
使用 vba 将 MS Access 查询输出到 Excel
带有子查询的 SQL 查询上的 MS Access VBA 运行时错误 3075