【发布时间】:2018-04-20 06:13:47
【问题描述】:
每当我尝试运行我的表单时,我都会收到此错误,
还有错误:
这样做的想法是选择一个字段,输入文本并让它根据文本输入拉记录,如果没有匹配,它会说“没有找到记录”。仍然是 VBA 新手,任何帮助将不胜感激。代码如下。 cboField 是组合框,txtBox 是文本框。我正在运行 Access 2010 以供参考。
Option Compare Database
Private Sub cboField_Enter()
Dim oRS As DAO.Recordset, i As Integer
If Me.Form.FilterOn = True Then DoCmd.ShowAllRecords
Set oRS = Me.RecordsetClone
cboField.RowSourceType = "Value List"
cboField.RowSource = ""
For i = 0 To oRS.Fields.Count - 1
If oRS.Fields(i).Type = dbText Then cboField.AddItem oRS.Fields(i).Name
Next i
End Sub
Private Sub txtBox_Exit(Cancel As Integer)
Dim sfilter As String, oRS As DAO.Recordset
If IsNull(cboField) Then
DoCmd.ShowAllRecords
MsgBox "select a field"
Exit Sub
End If
If IsNull(txtBox) Then DoCmd.ShowAllRecords: Exit Sub
sfilter = cboField & "LIKE '" & txtBox & " *'"
DoCmd.ApplyFilter , sfilter
Set oRS = Me.RecordsetClone
If oRS.RecordCount = 0 Then
MsgBox " no record matches"
DoCmd.ShowAllRecords
End If
End Sub
【问题讨论】:
-
每当我运行调试时,它都会突出显示 docmd.applyfilter、sfitler。这里可能需要额外的参数吗?
-
尝试在
"LIKE '"前加一个空格 -
^^ “做...或不做。没有尝试”-在这种情况下...“做”。缺少的空格将导致该消息 - 仔细查看该消息并尝试在三个标记
FirstNameLIKE、joe和*中找到运算符。 -
我之前添加了空格,这修复了错误,但是,现在当我选择一个字段并输入名称,然后单击文本框外部时,它返回我的“未找到记录消息”当我输入 joe 作为名字时。过滤器语句中的通配符位置是否尴尬?这是针对 vba 输入数据的捕获:sfilter = "FirstName LIKE 'joe *'"。
-
*前面可能不应该有空格。