2014-03-06 35 views
0

我對VBA很新,所以試圖讓我的頭與C#的區別。 我目前有一個小組來進行批量導入,只能從數據表子表單中選擇一行/記錄。訪問2010 For Form.Controls上的每個人

Private Sub cmdImport_Click() 

    Dim strBatchID As String 
    On Error GoTo NoBatch 
    Me.subClaimsToProcessLookup.Form.Controls.Item("txtBatchID").SetFocus 
    strBatchID = Me.subClaimsToProcessLookup.Form.Controls.Item("txtBatchID").Text 
    GoTo ContinueImport 

NoBatch: 
    MsgBox "Please select a row", vbOKOnly + vbQuestion, Me.Caption 
    Exit Sub 

ContinueImport: 
    If Not IsNumeric(strBatchID) Then 
     MsgBox "Please select a row", vbOKOnly + vbQuestion, Me.Caption 
     Exit Sub 
    End If 

    Dim lngUserID As Long 

'...process continues here... 

這隻會取其行的用戶已經選擇過程...現在用戶想簡單地處理從一個按鈕,點擊數據表中的所有行。

我想知道如果一個For Each可以爲此工作,而不必使用我不是很熟悉的記錄導航 (Move Next等),但For Each是一個簡單的概念,我來自C#。 如: 私人小組cmdImport_Click()

Dim strBatchID As String 
On Error GoTo NoBatch 
' Add loop here to go through each item in the datasheet view and process it. 
For Each Me.subClaimsToProcessLookup.Form.Controls.Item("txtBatchID").Text in Me.subClaimsToProcessLookup.Form.Controls 
    Me.subClaimsToProcessLookup.Form.Controls.Item("txtBatchID").SetFocus 
    strBatchID = Me.subClaimsToProcessLookup.Form.Controls.Item("txtBatchID").Text 
    GoTo ContinueImport 
Next  

NoBatch: MsgBox 「請選擇一行」,vbOKOnly + vbQuestion,Me.Caption 「退出小組 持續

ContinueImport: 如果不則IsNumeric(strBatchID)然後 MsgBox 「請選擇一行」,vbOKOnly + vbQuestion,Me.Caption 「退出小組 持續 結束如果

Dim lngUserID As Long 
....process continues here.... 

另外,如果一個For Each將正確地做到這一點,我是否正確設置了我的'Continue For'流程?

總之,我在尋找1)確認Form.Controls可以用作For Each中的集合; 和2),我已經把正確的流量控制(繼續)了的For Each

回答

0

也許:

Private Sub cmdImport_Click() 
    ''The recordset from the subform 
    Set rs = Me.subClaimsToProcessLookup.Form.Recordset 
    Do While Not rs.EOF 
     ''Each record in the subform recordset 
     sId = rs!ID 
     MsgBox sId ''Just to check 
     ''Do stuff with id 
     rs.MoveNext 
    Loop 
End sub 
+0

非常感謝您!否則我完全會過度設計這個循環。 – Brinky