在Access表单中,是否可以使用搜索框通过VBA填充表单?

时间:2019-04-04 12:45:50

标签: vba forms ms-access

我一直在努力解决此问题的两个解决方案...


尝试#1

我在Access窗体中有一个组合框,其中有两个选项“ All”和“ All Sample”。样本是从我的表中选择的记录的一部分,这些记录标记为带有sample_record_id(文本字段)以供审阅,以标识非零的正数。 “所有”和“所有样本”在我的行源中。我的组合框名为myFilters。

更新后,此VBA运行:

Private Sub myFilters_AfterUpdate()
Debug.Print myFilters.Value
  If myFilters.Value = "All Sample" Then
    Me.FilterOn = True
    DoCmd.ApplyFilter , "sample_record_id <> '0'"
  Else
    Me.FilterOn = False
  End If
End Sub

所有记录都有一个sample_record_id条目。

我期望在选择“所有样本”时填充我的样本记录,否则将填充所有记录。实际上,当选择“全部”时,所有记录都会填充,但是当选择“所有样本”时,将出现“输入参数值”对话框,其中包含文本“ sample_record_id”,并带有用于输入文本的空间。

有趣的是,当我切换IF和ELSE时:

If myFilters.Value = "All" Then
    Me.FilterOn = False
Else
    Me.FilterOn = True
    DoCmd.ApplyFilter , "sample_record_id <> '0'"

...两种选择均无法正常工作。


尝试#2

我还尝试了以下VBA:

Private Sub myFilters_AfterUpdate()
  DoCmd.SetWarnings False
  strSQL = "SELECT * FROM invoice_summary WHERE sample_record_id <> '0';"
  Debug.Print strSQL
  DoCmd.RunSQL strSQL
  DoCmd.SetWarnings True
End Sub

我期望它能执行与先前代码相同的操作,但是无论我选择哪个选项,都会弹出一个调试错误,提示“ RunSQL操作需要一个由SQL语句组成的参数”。

strSQL的调试返回:SELECT * FROM invoice_summary WHERE sample_record_id <>'0';

我已经尝试过使用和不使用;

sql语句可在标准查询中使用。

有没有办法使这两种方法都能起作用?

1 个答案:

答案 0 :(得分:0)

我花了两天零三十分钟的时间从事这项工作,所以我发现了。叹气。

使用我的第一次尝试,我只需要在字段名两边加上方括号:

Private Sub myFilters_AfterUpdate()
  If myFilters.Value = "All Sample" Then
    Me.FilterOn = True
    DoCmd.ApplyFilter , "[sample_record_id] <> '0'"
  Else
    Me.FilterOn = False
  End If
End Sub