MS-Access VBA: передача переменной из одной формы в другую с ошибкой во время выполнения - PullRequest
0 голосов
/ 22 октября 2018

У меня есть форма frm_New_Datasheet для ввода таблиц добровольцев в базу данных, которую я создаю.Для текстового поля идентификатора добровольца txt_Vol_ID У меня есть две кнопки для поиска существующего добровольца или добавления нового, каждая из которых открывает соответствующую форму.Я хочу, чтобы Vol_ID из frm_Volunteers возвращалось в frm_New_Datasheet после добавления нового добровольца.

Для этого я добавил следующий код в форму добровольца:

Private Sub Form_AfterInsert()
    If Not IsNull(Me.vol_Vol_ID) Then
        Dim volVal As Double
        volVal = Me.vol_Vol_ID
        Forms!frm_New_Datasheet!txt_Vol_ID.Value = volVal
    End If

End Sub  

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

Ошибка времени выполнения -2146500594 (800f000e):
Метод 'Item' объекта 'Forms' не выполнен

Отладчик выделяет строку, в которой я установил .Value = volVal, поэтому я искал другие способы вызвать это текстовое поле, но пока не получилось,Я пробовал

Forms([frm_New_Datasheet]).[txt_Vol_ID] = volVal`

, но это дает мне другую ошибку:

Ошибка времени выполнения '2465':
Microsoft Access не может найти поле '| 1 'упоминается в вашем выражении

Я довольно растерялся из-за этого, потому что я думаю, что правильно вызываю текстовое поле другой формы, и когда я ищу первую ошибку времени выполнения,Лучший совет, который я нашел, - «Иногда VBA глючит и пытается перезапустить», но это не помогло.Пока что это лучшая идея, которую мне приходилось передавать значение из одной формы в другую.Если есть другое место, я могу оставить этот код или еще один способ снять шкуру с этого кота, у меня все уши.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Я не уверен, считается ли это на самом деле ответом, но после того, как HansUp помог мне справиться с некоторыми проблемами при съемке в комментариях выше, я просто скопировал форму, которая не была найдена (до сих пор не уверен, почему), вставил ее с помощьюновое имя и удалил исходную форму.После этого все работает хорошо.

0 голосов
/ 22 октября 2018

Похоже, вам следует более тщательно проверять имена форм / элементов управления и убедиться, что форма frm_New_Datasheet открыта.

Вот правильный вариант для обращения с использованием коллекции форм по имени формы:

Forms("frm_New_Datasheet").txt_Vol_ID = volVal
...