【问题标题】:Recordsetclone Not working on SubformRecordsetclone 不适用于子表单
【发布时间】:2016-02-03 15:34:08
【问题描述】:

我在调整这段代码以循环访问我的子表单中的记录时遇到问题。当子表单加载时,它会遍历当前过滤的记录,根据其在另一个表 (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 ] 其中一些似乎是错误的,但我还是试过了。我在下面包含了一些表单信息以用于语法

主窗体:frmDPARTOP
SubForm 表单名称:frmDPARPARTSSubform
子窗体控件名称:subDPARTOP

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

以下是我按照此处的说明使用的当前代码。据我所知,当前代码未到达第 5 行中的 Debug.Print,因为即时窗口中没有显示任何内容

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

【问题讨论】:

    标签: ms-access vba ms-access-2010 recordset subform


    【解决方案1】:

    应该是:

    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
    

    【讨论】:

    • 运行时只会更新子表单中选中的记录
    • 我还注意到它没有到达代码的调试部分,因为没有任何东西打印到即时窗口中
    • 更新一条记录,打印一条Debug line。
    • 那么肯定有其他东西在更新记录,我没有打印任何调试行
    • 我已更新主帖以包含该 VBA 子中的所有代码。我已将这些注释掉并运行它们以查看它们是否相关,代码仍然没有触发,没有给出错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多