0

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

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

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

4

1 回答 1

0

引用表单代码模块中以 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
于 2012-08-09T12:09:50.007 回答