Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MS Access VBA:基于查询结果的VBA命令_Vba_Ms Access_Vbscript - Fatal编程技术网

MS Access VBA:基于查询结果的VBA命令

MS Access VBA:基于查询结果的VBA命令,vba,ms-access,vbscript,Vba,Ms Access,Vbscript,是否有任何方法可以将查询结果用作包含动态sql语句的VBA模块中的条件 比如说 if( count(user_id) from table > 0, THEN xport and send email to a,b,c) 我试图使条件依赖于特定的查询结果。。因此,如果某个查询有任何结果,我将让模块对该结果做出反应 我唯一尝试的另一种方法是从EXCEL查询数据库,并让EXCEL的VBA对某个单元格的值作出反应(该值将包含与我在access中尝试获取的条件相同的条件..但我宁愿尽可能保持ac

是否有任何方法可以将查询结果用作包含动态sql语句的VBA模块中的条件

比如说

if( count(user_id) from table > 0, THEN xport and send email to a,b,c)
我试图使条件依赖于特定的查询结果。。因此,如果某个查询有任何结果,我将让模块对该结果做出反应

我唯一尝试的另一种方法是从EXCEL查询数据库,并让EXCEL的VBA对某个单元格的值作出反应(该值将包含与我在access中尝试获取的条件相同的条件..但我宁愿尽可能保持access)

谢谢

使用DCount:

If DCount("*", "[table]") > 0 Then
    ' Insert code to export and send email to a,b,c.
Else
    ' Don't.
End If

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以查看表中有多少条记录。

当然有;Access是一个桌面数据库,如果您无法在代码中从该数据中检索值,它将毫无用处。这是非常基本的内容,您似乎应该找到一个Access教程来学习这些基础知识。请查看Access“帮助系统”中的Application.DCount方法主题。谢谢,我将90%的报告和知识功能转换为访问,因此VBA转换对于我需要完成的时间线来说有点繁忙-等待我的书出现,我感谢现场帮助人员。这太棒了,我得到了相同的结果,但VBA更多。我一直在使用excel并自动执行一个宏来查询一个特定的表,使用函数单元格作为VBA之外的变量,这样编辑变量的速度要快得多。然而,我没有看到任何比上面的代码更快、更简单的东西。