|
|
|
| Уважаемые специалисты. Проблема в следующем:
Есть форма с подчиненной. Подчиненная форма табличная. Когда я открываю основную форму, то все работает отлично. Когда я эту же форму открываю из другой (DoCmd. OpenForm) подчиненная форма ведет себя странно, такое впечатление что после любого перемещения (мышкой, или с клавиатуры), а также после ввода данных фокус устанавливается на первую запись. Я с таким эффектом столкнулся первый раз. Может быть я что не понимаю. Открываю я ее DoCmd.OpenForm stDocName, , , stLinkCriteria, , acDialog. | |
|
| |
|
|
|
| Как связаны форма с субформой, участвует ли в связи вычисляемое поле?
Вам действительно нужен режим acDialog? Т.е. вызвавшая процедура должна дождаться закрытия формы? | |
|
| |
|
|
|
| Суть такая:
Есть таблицы
1.Год
2.Месяц
3.Сотрудник
Год связан с месяцем по ключевому полю один ко многом (т.е. 1 году 12 месяцем)
Месяц с Сотрудником тоже 1 ко многом (т.е. 1 месяцу соответствует много сотрудников)
Основная форма работает на данных таблицы Год
На форме 1 список (list Box) для месяцев и 1 подчиненная форма (для сотрудников), с ним связанная.
Связана она со списком по специальному полю в которое вписывается значение невидимого (не выводимого) столбца списка (источник данных этого поля=lst.Column(1)). Таким образом получается эмуляция связи с подчиненным списком.
А сам список заполняется в соответствии со значением ключевого поля таблицы Год для каждой записи указанной таблицы.
И вот эта форма прекрасно работает если ее запускать в ручную из окна базы данных, а если я ее открываю из другой формы поведение подчиненной формы для сотрудников становится удивительно своеобразным.
Спасибо Вам большое за то, что откликнулись. | |
|
| |
|
|
|
| Как я и предполагал, виновато вычисляемое поле в связи. По какой-то приичине это поле перевычисляется, а это подталкивает субформу к перезапросу. Почему в одном случае работает нормально, а в другом нет - мне это неведомо.
Сделайте поле свободным и по Current формы и AfterUpdate списка присваивайте ему значение lst.Column(1). | |
|
| |
|
|
|
| Большое спасибо. Ваш совет оказался очень полезен. Работает как надо. Но за время переписки я эту форму полностью переделал. Она стала "легче". Но все равно вы мне очень помогли и в следующий раз я на эти грабли наступать не буду. Еще раз большое спасибо. Очень юыло приятно пообщаться.
С уважением, Андрей (так меня зовут). | |
|
| |
|
|
|
| Прошу прощения, я не сказал пр acDialog. Что с ним, что без него работает одинаково. | |
|
| |