MS Access:Object必需错误

时间:2012-08-09 12:04:12

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

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

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(),但到目前为止没有任何对我有用。

非常感谢您提供给我的任何帮助。

1 个答案:

答案 0 :(得分:0)

从表单的代码模块或Form中引用从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