Ms access MS Access由于括号而引发错误

Ms access MS Access由于括号而引发错误,ms-access,Ms Access,我有一些导航按钮在文本中有括号时不起作用。文本来自一个组合框,我从中获取一个值并执行findfirst。在我用括号输入值之前,它一直工作得很好。例如,3D-1(A)-461将抛出2423错误 最初我打算使用recordset.movenext,但我有三个子表单需要重新查询,我认为这是最好的方法 我感谢你的帮助 If TCTOfilt.ListIndex <> TCTOfilt.ListIndex - 1 Then TCTOfilt.ListIndex = TCTOfilt

我有一些导航按钮在文本中有括号时不起作用。文本来自一个组合框,我从中获取一个值并执行findfirst。在我用括号输入值之前,它一直工作得很好。例如,3D-1(A)-461将抛出2423错误

最初我打算使用recordset.movenext,但我有三个子表单需要重新查询,我认为这是最好的方法

我感谢你的帮助

  If TCTOfilt.ListIndex <> TCTOfilt.ListIndex - 1 Then
    TCTOfilt.ListIndex = TCTOfilt.ListIndex + 1

    Forms!frmMasterDashboard.Requery
    Forms!frmMasterDashboard!subFrmApplicNotes.Form.Requery

    Dim rst As Recordset
    Set rst = CurrentDb.OpenRecordset(Name:="ACbyTCTO", Type:=RecordsetTypeEnum.dbOpenDynaset)
    rst.FindFirst Criteria:=BuildCriteria(Field:="[TCTO Number]", FieldType:=dbText, Expression:=Me.TCTOfilt)
    If Not rst.NoMatch Then
        Me!subFrmOEMNOI.Form.Requery
    Else
        Exit Sub
    End If
Else
    TCTOfilt.ListIndex = TCTOfilt.ListCount + 1

    Forms!frmMasterDashboard.Requery
    Forms!frmMasterDashboard!subFrmApplicNotes.Form.Requery
    Set rst = CurrentDb.OpenRecordset(Name:="ACbyTCTO", Type:=RecordsetTypeEnum.dbOpenDynaset)
    rst.FindFirst Criteria:=BuildCriteria(Field:="[TCTO Number]", FieldType:=dbText, Expression:=Me.TCTOfilt)
    If Not rst.NoMatch Then
        Me!subFrmOEMNOI.Form.Requery
    Else
        Exit Sub
    End If
End If
如果TCTOfilt.ListIndex TCTOfilt.ListIndex为-1,则
TCTOfilt.ListIndex=TCTOfilt.ListIndex+1
形式!frmMasterDashboard.重新查询
形式!frmMasterDashboard!子RMapplications.Form.Requery
将rst设置为记录集
Set rst=CurrentDb.OpenRecordset(名称:=“ACbyTCTO”,类型:=RecordsetTypeEnum.dbOpenDynaset)
rst.FindFirst条件:=BuildCriteria(字段:=“[TCTO Number]”,字段类型:=dbText,表达式:=Me.TCTOfilt)
如果不是rst.NoMatch,那么
我子RMONOI.Form.Requery
其他的
出口接头
如果结束
其他的
TCTOfilt.ListIndex=TCTOfilt.ListCount+1
形式!frmMasterDashboard.重新查询
形式!frmMasterDashboard!子RMapplications.Form.Requery
Set rst=CurrentDb.OpenRecordset(名称:=“ACbyTCTO”,类型:=RecordsetTypeEnum.dbOpenDynaset)
rst.FindFirst条件:=BuildCriteria(字段:=“[TCTO Number]”,字段类型:=dbText,表达式:=Me.TCTOfilt)
如果不是rst.NoMatch,那么
我子RMONOI.Form.Requery
其他的
出口接头
如果结束
如果结束

您误用了
BuildCriteria
。这并不是要清理字段,而是要复制查询生成器的行为,括号确实有意义(它们调用函数)

如果要清理字符串,则必须编写自己的字符串清理函数或使用预先存在的函数(例如)


通常,我建议使用参数。但是,
.FindFirst
无法使用这些选项。但是,它们可用于querydefs,使用querydef直接查询所需内容通常要比打开记录集然后搜索该记录集快得多。查看如何在Access中使用参数。

您误用了
BuildCriteria
。这并不是要清理字段,而是要复制查询生成器的行为,括号确实有意义(它们调用函数)

如果要清理字符串,则必须编写自己的字符串清理函数或使用预先存在的函数(例如)


通常,我建议使用参数。但是,
.FindFirst
无法使用这些选项。但是,它们可用于querydefs,使用querydef直接查询所需内容通常要比打开记录集然后搜索该记录集快得多。查看如何在Access中使用参数。

这很奇怪。括号在访问字段中没有特定含义。哪一行代码导致了错误?它没有给我一个行号,但我相信它是表达式:=me.TCTOfilt。当该变量包含普通文本时,按钮“查找”起作用。但是圆括号打断了它什么是
BuildCriteria
?你写了那个方法吗?是的,它用于两个组合框,过滤一个和另一个。哦,BuildCriteria是我发送到rst.FindFirst的条件。它给出了要查找的字段、字段类型以及最终要搜索的表达式。rst.FindFirst条件:=BuildCriteria(字段:=“[TCTO Number]”,字段类型:=dbText,表达式:=Me.TCTOfilt)这很奇怪。括号在访问字段中没有特定含义。哪一行代码导致了错误?它没有给我一个行号,但我相信它是表达式:=me.TCTOfilt。当该变量包含普通文本时,按钮“查找”起作用。但是圆括号打断了它什么是
BuildCriteria
?你写了那个方法吗?是的,它用于两个组合框,过滤一个和另一个。哦,BuildCriteria是我发送到rst.FindFirst的条件。它给出了要查找的字段、字段类型以及最终要搜索的表达式。rst.FindFirst Criteria:=BuildCriteria(字段:=“[TCTO Number]”,字段类型:=dbText,表达式:=Me.TCTOfilt)谢谢我会调查的。谢谢我会调查的。