MS Access - открытие формы с новой записью и вставка значения из предыдущей формы - PullRequest
1 голос
/ 07 января 2011

У меня есть форма в базе данных MS Access, в которой перечислены заказы с номером заказа, по одному заказу на страницу.Внизу формы есть кнопка, которая открывает другую форму, чтобы добавить элемент для заказа.

Я пытаюсь использовать vb в MS Access, чтобы взять номер заказа и автоматически поместить его в полев форме детали для нового элемента.Я пробовал разные способы, но рекомендуется использовать OpenArgs.Но форма детализации не открывается, и я получаю ошибки во время выполнения.Вот детали проблемы - совет будет высоко ценится:

Соответствующие формы и поля: Форма с заказами: frmPedidoAvifiFind Форма с строками заказа для одного заказа: frmPedidoAvifi-dtlAdd (отдельная форма для добавлениядетали, но не для просмотра существующих).Поле в обеих формах для номера заказа - PedidoAvifiNo.Это числовое поле в обеих таблицах, которые связаны отношением «один ко многим» через это поле.

Основная форма: кнопка вызывает подробный вид, код следующий:

Код включенкнопка основной формы:

Sub AddDetails_Click()
  Dim strDocName As String

    strDocName = "frmPedidoAvifi-dtlAdd"

    ' Open frmPedidoAvifi-dtl form in data entry mode and store PedidoAvifiNo in  the form's OpenArgs property.

    DoCmd.OpenForm strDocName, , , , acFormAdd, , [frmPedidoAvifiFind]![PedidoAvifiNo]

End Sub

Подробная форма: свойство On Open

Private Sub Form_Open()
If Me.OpenArgs <> vbNullString Then
   Me.PedidoAvifiNo = Me.OpenArgs
End If

End Sub

Тест 1: выберите номер заказа в главной форме, чтобы отображалась запись.Нажмите кнопку, чтобы добавить строку заказа.- ошибка времени выполнения '2465' не может найти поле "|"упоминается.Отладка выделяет строку DoCmd.

Тест 2. Изменение строки openform на: DoCmd.OpenForm strDocName,,,, acFormAdd,, Me.PedidoAvifiNo результат: - ошибка во время выполнения 2501 действие openForm было отменено.

Спасибо, Майк Ганнер Реус, Испания

1 Ответ

1 голос
/ 07 января 2011

Полученная ошибка означает, что вы неправильно написали имя элемента управления PedidoAvifiNo.

Когда вы наберете Me., intellisense выдаст вам список доступных полей, посмотрите, что у вас похоже на PedidoAvifiNo или проверьте свойства. Это может быть очень легко переключить одну букву и не заметить.

Что касается второй части, вы должны использовать событие Load, а не событие Open в frmPedidoAvifi-dtlAdd, поскольку элементы управления еще не доступны в событии Open.

...