首页 > 解决方案 > 为什么我在一个表单上而不是另一个表单上收到运行时错误 2185?

问题描述

我对 MS Access 有点陌生,我在编码时有点学习,所以如果我的问题有点奇怪,请原谅我。

我创建了一个基于表格的表格,在表格中我有一个文本框,用户可以输入一些内容,它应该过滤表格并根据用户输入的内容显示结果。有两种形式的代码几乎相同(名为 Rec 和 Cx)。在其中一个(Rec)中,上面的描述工作得很好,但另一个(Cx)没有,我得到一个运行时错误 2185。让我给你看一些代码:

Private Sub strConsRecDesc_KeyUp(KeyCode As Integer, Shift As Integer)

FiltroRec = ""
FilterTextDesc = ""
If Len("" & Me.strConsRecDesc.Text) > 0 Then
    intLenDesc = Len(Me.strConsRecDesc.Text)
    RequeryForm
    strConsRecDesc.SetFocus
    Me.FilterOn = True
    If intLenDesc > Len(Me.strConsRecDesc.Text) Then
        Me.strConsRecDesc = Me.strConsRecDesc & " "
    Else
        Me.strConsRecDesc = FilterTextDesc
    End If
    strConsRecDesc.SelStart = intLenDesc
Else
    RequeryForm
    strConsRecDesc.SetFocus
End If
End Sub
            

我听说根据数据类型标记变量和字段是一种很好的做法,所以这里int代表整数,str代表字符串,Desc指的是描述字段。

根据在字段strConsRecDesc中键入的内容,我使用其中的RequeryForm过滤表,这基本上检查了用户可以写入的表单中的所有字段。让我向您展示描述字段的部分:

strConsRecDesc.SetFocus
If Len(strConsRecDesc.Value) > 0 Then
    FilterTextDesc = Me!strConsRecDesc.Value
    If Len(FiltroRec) > 0 Then
        FiltroRec = FiltroRec & " And "
    End If
    FiltroRec = FiltroRec & "[recDescricao] LIKE '*" & FilterTextDesc & "*'"
End If

在这种形式(Rec)中,我可以写,即这是一个测试,没有显示记录,因为没有记录,这是一个写在里面的测试,这是正确的。如果我键入符合条件的内容,它就可以正常工作。但是,在另一种形式(Cx 形式)中,我有以下 KeyUp 代码:

Private Sub strConsCxDesc_KeyUp(KeyCode As Integer, Shift As Integer)

FiltroCx = ""
FilterTextDesc = ""
If Len("" & Me.strConsCxDesc.Text) > 0 Then
    intLenDesc = Len(Me.strConsCxDesc.Text)
    RequeryForm
    strConsCxDesc.SetFocus
    Me.FilterOn = True
    If intLenDesc > Len(Me.strConsCxDesc.Text) Then
        Me.strConsCxDesc = Me.strConsCxDesc & " "
    Else
        Me.strConsCxDesc = FilterTextDesc
    End If
    strConsCxDesc.SelStart = intLenDesc
Else
    RequeryForm
    strConsCxDesc.SetFocus
End If
End Sub
            

Cx 的等效 RequeryForm 是:

    strConsCxDesc.SetFocus
    If Len(strConsCxDesc.Value) > 0 Then
        FilterTextDesc = Me!strConsCxDesc.Value
        If Len(FiltroCx) > 0 Then
            FiltroCx = FiltroCx & " And "
        End If
        FiltroCx = FiltroCx & "[cxDescricao] LIKE '*" & FilterTextDesc & "*'"
    End If

但是在 Cx 中,如果我在strConsCxDesc文本框中键入这是一个测试,我会收到运行时错误 2185。

我知道仅使用这一点代码很难掌握我要做什么,但是如果代码相同,我真的不知道为什么会出现此错误。

我感谢任何帮助,我很抱歉我的英语不好,这不是我的母语。

提前致谢。

标签: vbams-accessruntime-errorkeyup

解决方案


推荐阅读