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