1
我有一个表单,其中有一个字符串输入,该查询是查询(此处插入sql注入笑话)中的参数的输入,以及显示查询结果的子表单。更新子表单中的查询
目前的参数基本上是someVar Like "*" & forms!myForm!input & "*"
,但由于用户可以输入多个字符串(即一个句子),我真正想要的是someVar Like "*firstWord*" or someVar Like "*secondWord*"... etc
由于参数的数量变化,我需要编程生成查询。通过词语的输入循环和动态生成的where语句并不是很难在VBA:
dim sc as variant
sc=split(myInput)
dim where as string
where=""
for c=0 to UBound(sc)
where = where & "like '*" & sc(c) & "*' or "
next
where = left(where, len(where) - 3)
dim qd as querydef
set qd=currentDb.querydefs("myQuery")
qd.sql="select var where " & where
[my subform].requery
然而,当我更新查询,显示其数据,即使我告诉它不更新子窗体重新查询。如果我离开表单并重新输入,它有正确的数据。我的做法似乎是错误的。什么是更好的方法来解决这个问题?
通常的做法是直接将生成的SELECT sql字符串作为子表单的记录源(而不是查询)。 – Andre