环路我试图通过所有记录在一个访问表运行使用嵌套do ... while循环。嵌套做....而在访问VBA
还有就是不同的标准,每个循环之前,我跑的圈,所以我打开了多个记录。
当我运行的代码,这是工作,因为它应该,但问题是当记录集的1没有记录整个过程失败。
这里是代码嵌套循环位。
Dim rst1, rst2, rst3, rst4, rst5, rst6 As Recordset
Dim sqlSt1, sqlSt2, sqlSt3, sqlSt4, sqlSt5, sqlSt6 As String
Dim rcdCount, a, b, c, d, e, f As Double
Set dbs = CurrentDb
sqlSt1 = "SELECT * FROM [Rune List - Optimizer List] WHERE [Rune Slot]= 1"
sqlSt2 = "SELECT * FROM [Rune List - Optimizer List] WHERE [Rune Slot]= 2"
sqlSt3 = "SELECT * FROM [Rune List - Optimizer List] WHERE [Rune Slot]= 3"
sqlSt4 = "SELECT * FROM [Rune List - Optimizer List] WHERE [Rune Slot]= 4"
sqlSt5 = "SELECT * FROM [Rune List - Optimizer List] WHERE [Rune Slot]= 5"
sqlSt6 = "SELECT * FROM [Rune List - Optimizer List] WHERE [Rune Slot]= 6"
Set rst1 = dbs.OpenRecordset(sqlSt1)
Set rst2 = dbs.OpenRecordset(sqlSt2)
Set rst3 = dbs.OpenRecordset(sqlSt3)
Set rst4 = dbs.OpenRecordset(sqlSt4)
Set rst5 = dbs.OpenRecordset(sqlSt5)
Set rst6 = dbs.OpenRecordset(sqlSt6)
startTime = Time
rcdCount = rst1.recordCount
SysCmd acSysCmdInitMeter, "Processing: ", rcdCount
Debug.Print "4: " & rst4.recordCount
Debug.Print "6: " & rst6.recordCount
Do While Not rst1.EOF And Not rst1.BOF
Do While Not rst2.EOF And Not rst2.BOF
Do While Not rst3.EOF And Not rst3.BOF
Do While Not rst4.EOF And Not rst4.BOF
Do While Not rst5.EOF And Not rst5.BOF
Do While Not rst6.EOF And Not rst6.BOF
f = f + 1
rst6.MoveNext
Loop
e = e + 1
rst6.MoveFirst
rst5.MoveNext
Loop
d = d + 1
rst5.MoveFirst
rst4.MoveNext
Loop
c = c + 1
rst4.MoveFirst
rst3.MoveNext
Loop
b = b + 1
rst3.MoveFirst
rst2.MoveNext
Loop
a = a + 1
SysCmd acSysCmdUpdateMeter, a
DoEvents
rst2.MoveFirst
rst1.MoveNext
Loop
rst1.Close
rst2.Close
rst3.Close
rst4.Close
rst5.Close
rst6.Close
SysCmd acSysCmdRemoveMeter
endTime = Time
tmDuration = DateDiff("s", CDate(startTime), CDate(endTime))
tm = Format(Int([tmDuration]/3600), "00") & ":" & Format(Int(([tmDuration] - (Int([tmDuration]/3600) * 3600))/60), "00") & ":" & Format((([tmDuration] Mod 60)), "00")
Debug.Print a
Debug.Print b
Debug.Print c
Debug.Print d
Debug.Print e
Debug.Print f
Debug.Print "-----------------"
Debug.Print tm
有没有简单的方法,我可以检查空记录,并跳过那些会导致问题的?
感谢所有帮助
ķ
通过“空记录”我想你的意思是空记录。检查是否rst#.eof = false。我会重构这个,所以它们并不都是这样嵌套的。如果你发布了更多的代码,也许有人可以提出更好的逻辑。 – MatthewD
“整个过程失败”并没有告诉我们什么。告诉我们什么是错的。此外,向我们展示实际的代码失败,因为上面看起来是正确的。 – RBarryYoung
当它失败时,该表实际上是否存在于记录集中? –