2012-07-02 49 views
0

在Access 2010中,我试图为表格上的联系人表创建一个搜索框。我一直在得到一个错误13类型不匹配错误,我怎样才能得出它?

这里是我的代码:

Private Sub Command119_Click() 
On Error GoTo Command119_Click_Err 

If (Eval("[Forms]![frmTitlePage]![SearchBox] Is Null")) Then 
    ' Clear Filter when search box empty 
    DoCmd.RunCommand acCmdRemoveFilterSort 
End If 
' Handle "'s in search 
TempVars.Add "strSearch", Replace(Forms!frmTitlePage!SearchBox, """", """""") 
' Build the Filter 
TempVars.Add "strFilter", "([Last Name] Like "" * " & [TempVars]![strSearch] & " * "")" 
TempVars.Add "strFilter", TempVars!strFilter & " OR ([First Name] Like "" * " & [TempVars]![strSearch] & " * "")" 
DoCmd.ApplyFilter "", TempVars!strFilter, "" 
TempVars.Remove "strFilter" 
TempVars.Remove "strSearch" 


Command119_Click_Exit: 
Exit Sub 

Command119_Click_Err: 
MsgBox Error$ 
Resume Command119_Click_Exit 

End Sub 

我显然太可怕了,在这个编码,因此任何额外的帮助来清理这个搜索工具将高达极大帮助。

+0

你为什么要评估表单控件?我认为你会遇到单引号(D'Arcy)名字的问题。你应该考虑你的表单的过滤器属性,而不是'DoCmd.RunCommand acCmdRemoveFilterSort' ...开始:) – Fionnuala

+0

什么是TempVars,它来自哪里? – Fionnuala

+0

我使用了访问联系人模板中的代码,并试图将其模制到我的搜索框中。我怎么能使用你建议的DoCmd.RunCommandacCmdRemoveFilterSort? – user1496497

回答

0

你有一些多余的空格在搜索

你原来的代码生成Like " * Smith * "

删除的地方周围多余的空格添加[TempVars]![strSearch]产生这样的:

TempVars.Add "strFilter", "([Last Name] Like ""*" & [TempVars]![strSearch] & "*"")" 
TempVars.Add "strFilter", TempVars!strFilter & " OR ([First Name] Like ""*" & [TempVars]![strSearch] & "*"")" 

现在应该产生Like "*Smith*"

+0

我做了你所说的,但不幸的是,我收到了语法错误。 – user1496497