由於DAO存在問題(請參閱my previous question),我需要從Access查詢創建Excel VBA Recordset並使用用戶定義的函數過濾其結果。如何複製和過濾VBA中的DAO記錄集?
我想我可以使用下面的代碼來實現:
Sub test()
Dim db As Database
Dim rs As Recordset
Dim rs_clone As Recordset
Set db = OpenDatabase(dbPath)
Set rs = db.OpenRecordset("select testVal from dataTable")
Set rs_clone = rs.Clone
rs_clone.MoveLast
rs_clone.MoveFirst
while not rs_clone.eof
if myUDF(rs_clone!testVal) then
rs_clone.delete
end if
rs_clone.moveNext
wend
End Sub
但是,這實際上是從我的源表中刪除值,因此克隆是不是一個新的記錄,我可以自由地改變,它只是另一個指向原始指針的指針。如何將UDF過濾掉我不想要的記錄,同時保留原始數據不變,如果將UDF放入查詢本身不是一個選項?
17個問題,只有3個上傳投。 –
@Mitch,什麼時候適合upvote?如果我選擇一個答案,那是否完成同樣的事情? – sigil
記錄集具有篩選器屬性,因此您可以創建一個新的記錄集,該記錄集是現有記錄集的篩選版本。 –