【问题标题】:Access: Using query in VBA for recordset访问:在 VBA 中对记录集使用查询
【发布时间】:2012-05-11 03:07:44
【问题描述】:

我已经习惯用以下格式做记录集:

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 中保存简单的查询。

【问题讨论】:

标签: ms-access vba


【解决方案1】:

你可以

  • 使用具有参数的查询并指定参数的值,前提是查询使用参数。

    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
    

Dim rs As DAO.Recordset Dim rsFiltered As DAO.Recordset Set rs = CurrentDb.OpenRecordset(qry_SomeQueryWithoutParameters) rs.Filter = "field1 > 30" set rsFiltered = rs.OpenRecordset

【讨论】:

  • 使用第二个示例必须添加一条语句来设置另一个从过滤的记录集初始化的记录集并使用它,根据您提供的example。谢谢
  • @Rick 不错。我已更新我的答案以包含更正。
  • @ConradFrix 我在 Abfrageausdruck 'massnahme=bankett' 中得到“Syntaxfehler(fehlender Operator)”。我的代码:abfrage = "SELECT * FROM tab1" ;Set rs = db.OpenRecordset(abfrage) rs.Filter = "15massnahme=bankett" rsf = rs.OpenRecordset
  • @ConradFrix 检查您的第一个解决方案:如果我写 abfrage = "SELECT * FROM tab1"; Set qdf = db.QueryDefs(abfrage),则会收到“错误 3265,在此列表中找不到元素”
猜你喜欢
  • 2015-04-01
  • 2014-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-25
  • 1970-01-01
  • 2015-02-09
  • 1970-01-01
相关资源
最近更新 更多