我正在编写一个VBA代码,它将从访问数据库中的特定行返回数据。我使用的数据非常简单,我是VBA编码的完全新手,所以如果这是一个愚蠢的问题,请不要评判我。
我有以下代码,在用户更新表单中的文本框后运行:
>>> print(img)
[[0 1 0 0 2]
[0 1 0 0 0]
[0 0 0 0 0]
[0 0 0 0 3]]
我正在尝试在DLookup函数中搜索变量VarW,最后添加两个通配符。如果我用'Couch Center 224E-1'替换VarW,我的预期结果就会出现。
有两个学生住在一个房间,一个在沙发中心224E-1,一个在沙发中心224E-2。理想情况下,我会扩展代码以使用通配符返回两个学生(我知道DLookup只返回一个结果)。
现在,如果直接值被输入到DLookup语法或VarW中,DLookup只会返回值。
答案 0 :(得分:0)
首先,您应该使用VarW值
连接where-stringVarA = DLookup("[Name First] & ' ' & [Name Last] & ' ' & [Student Number]", "[Student Bookings (term 84)]", _
"[Room Space Description] like '" & VarW & "??'")
其次,使用Recordset。 您也可以使用“我”作为当前表格,而不是“[表格]![返回学生信息]!”
Sub Text2_AfterUpdate()
Dim VarA As Variant
Dim VarW As Variant
Dim Rs As Recordset
VarW = Left(Me.Text2, InStr(Me.Text2, "-") - 1)
Set Rs = CurrentDb.OpenRecordset("SELECT * FROM [Student Bookings (term 84)] WHERE [Room Space Description] like '" + VarW + "??'", dbOpenSnapshot)
While Not Rs.EOF 'loop for each rows that query returned
MsgBox (Rs![Name First] & " " & Rs![Name Last] & " " & Rs![Student Number]))
Wend
Set Rs = Nothing
End Sub
另外,如果你不喜欢“concat-style”,还有另外一种方法。它使用存储的参数查询。
答案 1 :(得分:0)
问题是您DLookUp
的标准。试试这个:
Sub Text2_AfterUpdate()
Dim VarA As Variant
Dim VarW As Variant
VarW = Left(Me.Text2, InStr(Me.Text2, "-") - 1)
VarA = DLookup("[Name First] &' '& [Name Last] &' '& [Student Number]", "Student Bookings (term 84)", _
"[Room Space Description] like '" & VarW & "??'")
MsgBox (VarW)
Text0.Value = VarA
End Sub