在 Access 2013 中具有多个条件的 DoCmd.SearchForRecord

Posted

技术标签:

【中文标题】在 Access 2013 中具有多个条件的 DoCmd.SearchForRecord【英文标题】:DoCmd.SearchForRecord with multiple criteria in Access 2013 【发布时间】:2016-07-11 17:40:13 【问题描述】:

我有一个从 SQL Server 表中提取数据的表单。该表单有两个未绑定的组合框。用户首先从 comboName 中选择,然后是 comboDate,然后表单将检索与值关联的记录。

'comboDate AfterUpdate VBA macro
DoCmd.SearchForRecord , "", acFirst, "[Name] = " & "'" & comboName.Value & "'" & _
" and [Date] = " & "'" & Format(comboDate, "yyyy-mm-dd") & "'"

如果我单独使用Name = comboName.Value,它将检索该名称的第一条记录,但如果我添加Date 条件,或使用Date 条件而不使用Name,组合框将不再检索记录.它只是停留在当前的。我已经转换了访问日期格式以匹配 SQL Server。还需要做什么?

【问题讨论】:

添加Form.Refresh也无效。 该过滤器是否在常规查询中用作 where 子句? @Brad 它没有,我知道这是由于日期格式,但我尝试的任何其他方法都会导致数据类型不匹配。 @Brad 啊!事实证明这只是日期格式。它与DoCmd.SearchForRecord 无关。 【参考方案1】:

Access 需要# 符号才能将其识别为日期。当我将查询更改为此时,它会起作用。

'comboDate AfterUpdate VBA macro
DoCmd.SearchForRecord , "", acFirst, "[Name] = " & "'" & comboName.Value & "'" & _
" and [Date] = " & "#" & Format(comboDate, "yyyy-mm-dd") & "#"

【讨论】:

以上是关于在 Access 2013 中具有多个条件的 DoCmd.SearchForRecord的主要内容,如果未能解决你的问题,请参考以下文章

Access 2007 Update Query 在单列上具有多个条件

Microsoft Access - 具有来自不同表的多个条件的 Dlookup

MS Access:具有多个条件的双循环查询以显示在表单上

将具有多个表的 Access 数据库导出到具有多个工作表的 Excel

Microsoft Access 表达式 - DSum 多个条件 - 日期

具有多个域的访问控制允许来源