我尝试了一些变化,似乎都给了我相同的结果 - 所以我忽略了一些我认为非常简单的东西。
我有一个用于帐号的文本框、一个搜索按钮和一个用于搜索查询结果的文本框。 但是,当我点击搜索时 - 查询本身被添加到第二个文本框中,而不是预期结果 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