#ms-access #vba
#ms-access #vba
Вопрос:
Я задавал соответствующий вопрос раньше, но это не решило проблему. Итак, я публикую это снова с более подробной информацией.
У меня есть форма, frmMain
которая содержит вложенную форму frmSub
. frmSub
содержит поле со списком subCombo
. В событии Not_in_List subCombo
у меня есть следующий код:
If msgbox ("Do you want to add this data in list?", vbYesNo) = VbYes then
DoCmd.OpenForm "frmList", acNormal,,, acFormAdd, acDialog, NewData amp;";"
Response = acDataErrContinue
DoCmd.CancelEvent
Me.ActiveControl.Undo
End if
Откроется окно, frmList
где я успешно добавляю эти новые данные, и в кнопке сохранить там у меня есть код для обновления источника строки для subCombo
:
DoCmd.Save
Me.Refresh
'make new data available in subCombo on frmMain
Forms!frmMain.frmSub.form.subCombo.Requery
Но эта последняя строка кода не работает. Таким образом, subCombo остается незатронутым.
Я не уверен, что вызывает эту проблему. Был бы признателен, если бы вы могли помочь в этом.
Комментарии:
1. Вам следует отредактировать свой предыдущий вопрос, а не публиковать почти идентичный.
2. Извините, я здесь новичок и не очень хорошо знаком с правилами. В следующий раз будем осторожны. На данный момент я публикую решение моей проблемы здесь и удалю другое.
Ответ №1:
Обратитесь к свойствам и элементам управления формы и подчиненной формы
Вам нужно
Forms!frmMain!frmSub.Form!subCombo.Requery
Обратите внимание на дополнительный .Form
Комментарии:
1. Извините, это была ошибка в моем сообщении, просто исправил ее. В моем коде у меня есть . упомянутая форма. Также обновлен мой вопрос.
Ответ №2:
Что ж, проблема решена окончательно!
Оказывается, мне не нужно было запрашивать subCombo
from frmList
, поскольку он был открыт в acDailog
режиме и приостановил предыдущий код при Not_in_List
событии subCombo
. Вместо этого я помещаю me.subCombo.Requery
непосредственно перед End If
строкой в Not_in_List
событии, и это работает как по волшебству. Окончательный код выглядит следующим образом:
`If msgbox ("Do you want to add this data in list?", vbYesNo) = VbYes then`
`DoCmd.OpenForm "frmList", acNormal,,, acFormAdd, acDialog, NewData amp;";"`
`Response = acDataErrContinue`
`DoCmd.CancelEvent`
`Me.ActiveControl.Undo`
`End if`