此代码仅用于计算总数,然后计算该总数的百分比,然后在文本框中显示百分比金额。此代码在单击表单上的按钮时运行,但它使用基于该表单上的子表单的数据,并且它应显示的文本框位于表单上。表单和子表单都在类列表中调用,因此它让我感到困惑的是它为什么会出现“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(),但到目前为止没有任何对我有用。
非常感谢您提供给我的任何帮助。
答案 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