Recordsetclone 不适用于子表单

Recordsetclone Not working on Subform

我在调整这段代码以循环遍历子表单中的记录时遇到问题。当子表单加载时,它循环遍历当前筛选的记录,根据其在另一个 table (tDPARSHEET) 中的状态相应状态调整字段 6。但是,当我从主窗体上的刷新按钮调用它时,我无法让它工作

With Me.RecordsetClone
If Not (.BOF And .EOF) Then
.MoveFirst
While Not .EOF
Debug.Print .Fields(6).Name, .Fields(6).Value
If .Fields(6).Value <> DLookup("OverallStatus", "tDPARSHEET", "[LocalPartNumber]='" & .Fields(3).Value & "' AND [LocalRevision]='" & .Fields(4).Value & "'") Then
'Debug.Print "No Match"
.Edit
.Fields(6).Value = DLookup("OverallStatus", "tDPARSHEET", "[LocalPartNumber]='" & .Fields(3).Value & "' AND [LocalRevision]='" & .Fields(4).Value & "'")
.Update
Else
'Debug.Print "!!Match Found!!"
End If
.MoveNext
Wend
.Requery
End If
End With

我相信这在加载时有效,因为 Me.Recordsetclone 在子表单加载时被调用,如果我想从主表单调用它,特别是从我用来刷新主表单的按钮调用它,那么我需要直接调用它

Forms!frmMain.frmsub.Form.recordsetclone 是我看到的语法。连同我在网上看到的任何其他语法 [me.frmsub.form.recorsetclone // frmMain.subfrmctrlname.form.recordsetclone // me.frmMain.frmsub.forms.subfrmctrlname.recorsetclone ] 其中一些似乎是错误的,但我试过了 none-少。我在下面包含了一些表单信息以用于语法

主要形式:frmDPARTOP
子表单表单名称:frmDPARPARTSSubform
子窗体 Ctl 名称:subDPARTOP

我做错了什么不允许我让这个记录集工作,目前我有 Me.subDPARTOP.Form.RecordsetClone,我没有收到错误,它只是不起作用

以下是我按照此处的说明操作后正在使用的当前代码。据我所知,当前代码在第 5 行未达到 Debug.Print,因为立即 window

中没有显示任何内容
Private Sub Command31_Click()
'Loops through Subform and updates DPAR Status from tDPARSHEET
'Main Form Name is frmDPARTOP
'Sub Form Name is frmDPARPARTSSubform
'Sub Form Control is subDPARTOP
Dim Field6 As Variant
With Me!subDPARTOP.Form.RecordsetClone
While Not .EOF
    Field6 = DLookup("OverallStatus", "tDPARSHEET", "[LocalCustomer]='" & .Fields(2).Value & "' AND [LocalPartNumber]='" & .Fields(3).Value & "' AND [LocalRevision]='" & .Fields(4).Value & "'")
    Debug.Print .Fields(6).Name, .Fields(6).Value, Field6
    If .Fields(6).Value <> Field6 Then
        Debug.Print "No Match"
       .Edit
           .Fields(6).Value = Field6
       .Update
    Else
        Debug.Print "!!Match Found!!"
    End If
    .MoveNext
Wend
.Requery
End With
'Refreshes DPAR Counter
Me.Customer.SetFocus
Me.Dirty = True
Me.Refresh

End Sub

它应该是:

Dim Field6 As Variant
With Me!SubformCONTROLName.Form.RecordsetClone
    If .RecordCount > 0 Then
        .MoveFirst
    End If
    While Not .EOF
        Field6 = DLookup("OverallStatus", "tDPARSHEET", "[LocalPartNumber]='" & .Fields(3).Value & "' AND [LocalRevision]='" & .Fields(4).Value & "'") The
        Debug.Print .Fields(6).Name, .Fields(6).Value, Field6
        If .Fields(6).Value <> Field6 Then
            Debug.Print "No Match"
           .Edit
               .Fields(6).Value = Field6
           .Update
        Else
            Debug.Print "!!Match Found!!"
        End If
        .MoveNext
    Wend
    .Requery
End With