一般程式設計時,多多少少都會用到流程控制,不外乎就是For..Next、While..Wend、Do…Loop等,而這些在VBA上也都有,當處理Access的資料時,是非常有用的,筆者較為習慣使用Do…Loop的方式處理資料,其常用的語法如下:
Sub 遍歷資料示範()
'使用SQL語法查詢所需資料
strSQL = "" & _
"SELECT A.* " & vbCrLf & _
"FROM InventoryOfProperty AS A " & vbCrLf & _
"WHERE (((A.STATUS_ID)=4)) " & vbCrLf & _
"ORDER BY A.CATEGORY; "
'使用OpenRecordset方式將資料提出
Set m = CurrentDb.OpenRecordset(strSQL)
'如果有資料存在
If m.EOF = False Then
'處理方式
'列出資料筆數於Debug視窗
m.MoveLast
Debug.Print "資料筆數:" & m.RecordCount & "筆"
'切到第一筆資料
m.MoveFirst
Do
'處理此筆資料
Debug.Print m("CATEGORY") & ": " & m("MARK") & "/" & m("MODEL") _
& "/" & m("TYPE") & "(" & m("S/N") & ")"
'切到下一筆資料,然後再處理資料
m.MoveNext
'直到沒有資料存在
Loop Until m.EOF
'如果沒有資料存在
Else
'處理方式
Debug.Print "無資料!"
End If
End Sub
以上的方式,於Do…Loop中,還可以再使用If等判斷式,來進行不同處理方式,亦可於Do…Loop中帶出變數,再套用到另一個OpenRecordset的SQL語句中,帶出另外的查詢資料,再使用另外的Do…Loop方式來處理新的查詢資料,以此方式來達到處理多個查詢資料的需求,各位可以依照自已的需求來進行調整,以上範例供各位參考。