Ms access 访问:在VBA中对记录集使用查询

Ms access 访问:在VBA中对记录集使用查询,ms-access,vba,Ms Access,Vba,我习惯于使用以下格式进行记录集: Dim rs As DAO.Recordset Dim strSQL As String strSQL = "Select field1, field2 from myTable where field1 > 30" Set rs = CurrentDb.OpenRecordset(strSQL) '... Do wahtever using rs. 是否可以使用已创建的查询而不是文本并为其提供where子句 这是一个链接到SQL Server 2

我习惯于使用以下格式进行记录集:

Dim rs As DAO.Recordset
Dim strSQL As String

strSQL = "Select field1, field2 from myTable where field1 > 30"

Set rs = CurrentDb.OpenRecordset(strSQL)

'... Do wahtever using rs.
是否可以使用已创建的查询而不是文本并为其提供where子句

这是一个链接到SQL Server 2008数据库的表。我喜欢将简单查询保存在Access中。

您可以

  • 如果查询使用参数,请使用具有参数的查询并为参数指定值

    Dim dbs As DAO.Database
    Dim qdf As DAO.QueryDef
    Dim prm As DAO.Parameter
    Dim rst As DAO.Recordset
    
    Set qdf = CurrentDb.QueryDefs("qry_SomeQueryWithParameters")
    
    qdf.Parameters("SomeParam").Value = "whatever"
    
    Set rst = qdf.OpenRecordset
    

  • 指定查询名称作为命令,并在记录集上使用

请看第一个示例,其中您可以在代码中使用参数。使用第二个示例,您必须添加一条语句,以设置从filterd记录集初始化的另一个记录集,并根据您提供的命令使用该记录集。Thanks@Rick美好的我已经更新了我的答案以包含更正。@ConradFrix我得到“Syntaxfehler(fehlender操作符)在abfrageaudruck'massnahme=bankett.我的代码:
abfrage=“SELECT*FROM tab1”;Set rs=db.OpenRecordset(abfrage)rs.Filter=“15massnahme=bankett”rsf=rs.OpenRecordset
@ConradFrix检查您的第一个解决方案:我得到”错误3265,在此列表中未找到元素“如果我写入
abfrage=“从表1中选择”;设置qdf=db.querydfs(abfrage)

    Dim rs As DAO.Recordset
    Dim rsFiltered As DAO.Recordset


    Set rs = CurrentDb.OpenRecordset(qry_SomeQueryWithoutParameters)

    rs.Filter = "field1 > 30"
    set rsFiltered  = rs.OpenRecordset