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,并在其他尝试迭代中获得了相同的结果。

在这种情况下,您可能需要重新考虑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

一种可能的方法是,将Text2类型更改为combo box。然后设置Text2.recordsource = Task并使用Me.Text2.requery刷新显示的值。

另一种方法是打开记录集,读取值,然后设置 Text2 值。

Dim r as dao.recordset, db as dao.database  
set db = currentdb()  
set r=db.openrecordset(Task)  
Me.Text2 = r(0).value
Set r = Nothing

最新更新