【问题标题】:MS Access: Object Required errorMS Access:需要对象错误
【发布时间】:2012-08-09 12:04:12
【问题描述】:

此代码仅用于计算总数,然后计算该总数的百分比,然后在文本框中显示百分比金额。此代码在单击表单上的按钮时运行,但它使用基于该表单上的子表单中的数据,并且它应该显示到的文本框位于表单上。表单和子表单都在类列表中调用,所以我很困惑为什么会出现“需要对象”错误。

Private Sub cmdTest_Click()
'Initialisation
Dim TotalAmount As Integer 
Dim GiftAid As Integer
'Processing
   If AllForms!frmGiftAid!subfrmqryGiftAid!PaymentIncrement Is Not Null Then
       If AllForms!frmGiftAid!subfrmqryGiftAid!PaymentIncrement = "Monthly" Then
          TotalAmount = _
            (AllForms!frmGiftAid!subfrmqryGiftAid!PaymentAmountPerIncrement * 12)
       Else
          TotalAmount = _
            AllForms!frmGiftAid!subfrmqryGiftAid!PaymentAmountPerIncrement
       End If
   End If

   'Termination
   GiftAid = (TotalAmount * 0.25)
   AllForms!frmGiftAid!subfrmqryGiftAid!subfrmqryGiftAidtxtGiftAid = GiftAid
End Sub

发生错误的行是第一个引用子表单的行,所以它是:

如果 AllForms!frmGiftAid!subfrmqryGiftAid!PaymentIncrement 不为空,则

我尝试使用代码的不同变体来引用子表单(仅引用子表单,使用“Forms”而不是“AllForms”)以及在子表单本身而不是表单中尝试它并这样做不同的事件,例如 On_Current() 或 On_Load(),但到目前为止对我没有任何帮助。

您能提供给我的任何帮助将不胜感激。

【问题讨论】:

    标签: ms-access runtime-error ms-access-2010


    【解决方案1】:

    引用表单代码模块中以 Me 开头的子表单,或者引用表单,后跟表单名称。然后,您可以使用子窗体控件的名称 Form 来引用所包含的对象,最后是所包含窗体的属性。

     Forms!frmGiftAid!subfrmqryGiftAid.Form!PaymentIncrement
    

    或者

     Me.subfrmqryGiftAid.Form.PaymentIncrement
    

    请注意,重要的是使用子表单控件的名称,而不是包含的表单名称。

    此代码将在父表单上运行,并且需要在子表单上选择一条记录。

    If Not IsNull(Me.subfrmqryGiftAid.Form.PaymentIncrement) Then
       If Me.subfrmqryGiftAid.Form.PaymentIncrement = "Monthly" Then
          TotalAmount = _
            Me.subfrmqryGiftAid.Form.PaymentAmountPerIncrement * 12)
       Else
          TotalAmount = _
            Me.subfrmqryGiftAid.Form.PaymentAmountPerIncrement
       End If
    End If
    

    【讨论】:

    • 第一个出现运行时错误 2465“Microsoft Access 找不到您的表达式中引用的字段“表单””
    • 第二个返回同样的“需要对象”错误
    • 你在哪里运行你的代码?父窗体?子窗体?
    • 我正在从父窗体的 On_Click() 事件中运行代码。
    • 您,先生,是个天才。我相信我欠你一品脱。