我有一个关于在循环中打开和关闭记录集的问题。 我现在拥有的代码可以正常工作,但事实是我知道可以用一种不同的,更快或更佳的方式进行编码。我对SQL的了解不高,因此是我的问题。
由于每次代码有点慢时我都必须关闭记录集。
Do Until Cells(c, 2).Value = Empty
TeamMember = Cells(c, 2).Value
r = 4
For i = 4 To 34
Days = Cells(r, i).Value
strSQL = "SELECT [" & TeamMember & "] From [Planning$] Where [Days]=" & "#" & Format(Days, "mm/dd/yyyy") & "#" & ""
rs.Open strSQL, DBConnection, adOpenDynamic, adLockOptimistic
Cells(c, i).Offset(0, 0).CopyFromRecordset rs
rs.Close
Next i
c = c + 1
Loop
答案 0 :(得分:0)
看看使用这样的东西
"Where [Days]>=#" & _
CDate(Application.WorksheetFunction.Min(Range("a4:a34"))) & _
"# AND [Days]<=#" & _
CDate(Application.WorksheetFunction.Max(Range("a4:a34"))) & "#"
然后使用记录集.find
方法查找您的日期,然后在每个循环中仅使用.moveFirst
。