2014-01-28 10 views
0

Я создал форму в MS Access 2010, используя несколько подчиненных элементов в элементе управления с вкладками. Некоторые из подформ содержат TextField с макросом OnClick, открывающим форму PopUp. Когда вы нажимаете кнопку «ОК», он вычисляет значение с помощью someFn(), получает текущую вкладку из Основной формы и записывает значение в TextField в соответствующей SubForm.MS Access VBA Runtime Error 459

Это код для «OK» -Кнопка в PopUp форме:

Private Sub btn_ok_Click() 
    Dim page As Integer 
    page = Forms![00_data].Form.tabbed.Value 
    Dim Val As Integer 
    Val = someFn 'returns some Value between -1 and 100 
    DoCmd.Close acForm, "10_my_popup_form", acSaveNo 
    If Val >= 0 Then '0-100 are valid 
     Select Case page 
      Case 0 
       Forms![00_main]![01_subform].Form.txt_field.Value = Val 
      Case 3 
       Forms![00_main]![04_subform].Form.txt_field.Value = Val 'Error 459 
     End Select 
    ElseIf Val = -1 Then '-1 is an error code, delete the Value 
     Select Case page 
      Case 0 
       Forms![00_main]![01_subform].Form.txt_field.Value = Null 
      Case 3 
       Forms![00_main]![04_subform].Form.txt_field.Value = Null 'Error 459 
     End Select 
    End If 
End Sub 

ВТОРОСТЕПЕННОЕ работает прекрасно, если я нажимаю на txt_field 01_subform (Tab 0), но почему он выдаст ошибку на 04_subform (вкладка 3)?

EDIT: Я нашел статью, в которой майкрософт упоминает ошибку, но ни один из решения проблем подходов не может решить эту проблему: http://support.microsoft.com/kb/2748410

Как я создал 01_subform на 2014/01/26 и обновления был установлен в 2014/01/27, прежде чем я создал 04_subform, на самом деле это может быть причиной, но как это исправить?

+0

Если вы еще этого не сделали, вы можете попробовать тщательный [декомпилировать] (http://stackoverflow.com/a/3268188/2144390) и перекомпилировать базу данных Access. –

+0

Я этого еще не сделал, но после перекомпиляции БД я получаю ошибку Runtime «-2146500594 (800f000e)»: метод «Форма» объекта «_SubForm» не удался, только для 04_subform снова –

ответ

0

После перекомпиляции базы данных были выброшены некоторые другие ошибки. Я создал новую форму, скопировал все элементы управления и код VBA в нее, переименовал подформы и поменял их, теперь все работает нормально.