MS Access: ошибка "Требуется объект"

Этот код просто предназначен для вычисления общей суммы, а затем процента от этой суммы, а затем отображения процентной суммы в текстовом поле. Этот код запускается при нажатии кнопки в форме, но он использует данные, основанные на подчиненной форме этой формы, а текстовое поле, которое должно отображаться, находится в форме. И форма, и подчиненная форма вызываются в списке классов, поэтому меня смущает, почему возникает ошибка «Требуется объект».

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 не равен нулю, то

Я пытался использовать различные варианты кода для ссылки на подчиненную форму (просто ссылаясь на подчиненную форму, используя «Формы» вместо «Все формы»), а также пробовал ее в самой подчиненной форме, а не в форме и делал это на разных событиях, такие как On_Current() или On_Load(), но у меня пока ничего не работает.

Любая помощь, которую вы могли бы мне предложить, будет принята с благодарностью.


person Ben W    schedule 09.08.2012    source источник


Ответы (1)


Ссылка на подчиненную форму начинается либо с Me из модуля кода формы, либо с формы, за которой следует имя формы. Затем у вас есть имя элемента управления подчиненной формы, Form, для ссылки на содержащийся объект, и, наконец, свойство содержащейся формы.

 Forms!frmGiftAid!subfrmqryGiftAid.Form!PaymentIncrement

Or

 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
person Fionnuala    schedule 09.08.2012
comment
Первый возникает с ошибкой времени выполнения 2465 Microsoft Access не может найти форму поля, на которую ссылается ваше выражение. - person Ben W; 09.08.2012
comment
И второй возвращается с той же ошибкой Object Required - person Ben W; 09.08.2012
comment
Где вы запускаете свой код? Родительская форма? Подформа? - person Fionnuala; 09.08.2012
comment
Я запускаю код из события On_Click() родительской формы. - person Ben W; 09.08.2012
comment
Вы, сэр, гений. Кажется, я должен тебе пинту пива. - person Ben W; 09.08.2012