首页 > 解决方案 > MS Access - 文本字段返回查询字符串而不是查询结果值

问题描述

我尝试了一些变化,似乎都给了我相同的结果——所以我忽略了一些我认为非常简单的东西。

我有一个用于帐号的文本框、一个搜索按钮和一个用于搜索查询结果的文本框。但是,当我点击搜索时 - 查询本身被添加到第二个文本框中,而不是 1 或 0 的预期结果。

这是我在此站点上找到的最新尝试:

Private Sub SearchAcctNumber_Click()


Dim strsearch As String
Dim Task As String

If IsNull(Me.Text0) Or Me.Text0 = "" Then
   MsgBox "Please type in your account number.", vbOKOnly, "Acct Num Needed"
   Me.Text0.SetFocus
Else
    strsearch = Me.Text0.Value
    Task = "SELECT I_Ind FROM dbo_BC WHERE (([ACCOUNT_NUMBER] Like ""*" & Text0 & "*""))"
   Me.Text2 = Task

End If

End Sub

有人能帮我看看我犯的错误吗?如此简单的事情并没有像我认为的那样工作,这让我发疯了。

编辑:想补充一点,我也尝试过 DLookup 并在其他尝试迭代中得到相同的结果。

标签: sqlms-accessvba

解决方案


在这种情况下,您可能需要重新考虑该Like方法。无论如何,问题是您为文本框分配了一个字符串(SQL 命令),这就是您所看到的。

试试这个:


Private Sub SearchAcctNumber_Click()

    If IsNull(Text0.Value) Then
       MsgBox "Please type in your account number.", vbOKOnly, "Acct Num Needed"
       Text0.SetFocus
       Exit Sub
    End If

    Dim strSearch As String
    Dim strCriteria As String

    strSearch = Text0.Value
    strCriteria = "ACCOUNT_NUMBER Like '*" & strSearch & "*'"

    Text2.Value = Nz(DLookup("I_Ind", "dbo_BC", strCriteria), "Not found...")

End Sub

您也可以在键入时“搜索” Text0。在尝试定位之前设置最小字符数。


Private Sub Text0_Change()
    If Len(Text0.Text) > 3 Then
        Text2.Value = Nz(DLookup("I_Ind", "dbo_BC", "ACCOUNT_NUMBER Like '*" & Text0.Text & "*'"), vbNullString)
    End If
End Sub

推荐阅读