Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2009, 09:50   #1
touchka
Пользователь
 
Регистрация: 21.12.2009
Сообщений: 10
По умолчанию Обновление поля со списком в подчиненной форме

Автоматизирую подстановку активных абонементов в программе учета фитнес-клуба:

Таблицы:
Абонемент (ID абонемент, Дата начала, Дата конца)
Занятие (ID занятие, Дата занятия)
Посещение (ID занятие, ID абонемент)

Форма:
Занятие (ID занятие, Дата занятия)
Подчиненная форма Посещение (ID занятие, ID абонемент)
где [ID Абонемент] - поле со списком активных абонементов на основе запроса:
SELECT Абонемент.[ID абонемент]
FROM Абонемент
WHERE ((([Forms]![Занятие]![Дата занятия])>=[Абонемент].[Дата начала] AND ([Forms]![Занятие]![Дата занятия])<=[Абонемент].[Дата конца]));

Проблема:
Поле со списком [ID абонемент] обновляется только при первом открытие формы, а надо чтобы оно обновлялось при любом изменении даты в главной форме (изменении значении, переходе на другую запись)

Аналогичных тем много, ситуации похожие, но трудно уловить само правило:

По аналогии с одним из примеров сделал следующую конструкцию:

me!Подчиненная_форма_посещение![ID_абонемент].requery

поставил ее в события Обновление и Изменение поля [Дата занятия], но не помогло.

Просьба помочь
Вложения
Тип файла: rar Учет_touchka.rar (22.7 Кб, 45 просмотров)
touchka вне форума Ответить с цитированием
Старый 22.12.2009, 11:36   #2
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте touchka.
1. для сравнения значения с диапазоном применим оператор Between
2. у MS Access существует (подтвержденная производителем) проблема при обращении к объекту в SQL конструкции (в Вашем случае поле с датой), в конструкторе всё замечательно, результат применения нулевой. Решается проблема или использованием в качестве источника строк сохраненного запроса (в нем может присутствовать обращение к объекту), или в SQL конструкции получать значение поля из пользовательской функции (в примере).
3. настоятельно рекомендую не использовать для имен объектов БД (таблицы, поля таблиц, запросы, формы,...) длинные имена (Активные абонементы), используйте или сокращения - АктАбон, или такие варианты АктивныеАбонементы, Активные_абонементы. Речь не только о "хорошем тоне", это избавит от проблем в случае конструирования с использованием мастера, и уменьшит объем кода и исправлений во всех случаях.
Удачи Вам.
Евгений.
Вложения
Тип файла: rar Учет_touchka.rar (22.4 Кб, 140 просмотров)
Teslenko_EA вне форума Ответить с цитированием
Старый 22.12.2009, 15:45   #3
touchka
Пользователь
 
Регистрация: 21.12.2009
Сообщений: 10
По умолчанию

Спасибо большое Евгений за подробный расклад! Счас экспериментирую с предложенной Вами функцией, дело сдвинулось!
touchka вне форума Ответить с цитированием
Старый 25.12.2009, 23:12   #4
touchka
Пользователь
 
Регистрация: 21.12.2009
Сообщений: 10
По умолчанию

Здравствуйте Евгений!
Доработанная Вами база помогла мне уже значительно продвинутся в своем проекте, но появляются нюансы в рамках этой же темы, которые хотелось бы сгладить:

1. Не могу добится обновления поля со списком [ID абонемент] в подчиненной форме не только при изменении поля [Дата занятия] в главной форме Занятия, но и при переходе по записям главной формы и внесении изменений в форму Абонементы.

2. Момент, который меня обрадовал, но насторожил - если после выбора активного абонемента в поле со списком [ID абонемент] изменить [Дату занятия] на дату вне условия активности абонемента, то выбранный абонемент продолжает оставаться в списке выбранных.
Это нормально, т.е. ограничение поля со списком работают только при выборе элемента и не могут сыграть злую шутку при нечаянных изменениях дат занятия или дат активности абонемента?
Блок, который будет контролировать изменения, я сейчас пишу, но все-таки..
touchka вне форума Ответить с цитированием
Старый 26.12.2009, 13:20   #5
touchka
Пользователь
 
Регистрация: 21.12.2009
Сообщений: 10
По умолчанию

Здравствуйте Евгений!
1. Как добится обновления поля со списком [ID абонемент] в подчиненной форме не только при изменении поля [Дата занятия] в главной форме Занятия, но и при переходе по записям главной формы и внесении изменений в форму Абонементы.
2. Момент который обрадовал, но насторожил - ограничение на поле со списком не влияют на уже выбранный элемент, это нормально?
Счас пишу блок, который ограничит изменения Даты занятия, Даты начала, Даты конца для сохранения условия активности уже выбранных абонементов, но все-таки.
touchka вне форума Ответить с цитированием
Старый 27.12.2009, 19:34   #6
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

1. если вынести команду обновления в отдельную процедуру и разместить её в модуле, это обновление можно вызывать из любого события любой формы
Код:
'переход по записям главной формы
Private Sub Form_Current()
    reqField
End Sub
'процедура в модуле
Sub reqField()
On Error Resume Next 'защита от ошибки если форма закрыта
    Form_подчиненная_форма_Посещение.ID_абонемент.Requery
End Sub
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 27.12.2009, 23:46   #7
touchka
Пользователь
 
Регистрация: 21.12.2009
Сообщений: 10
По умолчанию

Евгений спасибо большое!!!
touchka вне форума Ответить с цитированием
Старый 01.08.2012, 17:06   #8
abisma2008
Новичок
Джуниор
 
Регистрация: 01.08.2012
Сообщений: 1
По умолчанию

Вся информация во вложения:
За ранее спасибо.
Вложения
Тип файла: rar Просчёт.rar (202.0 Кб, 93 просмотров)
abisma2008 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос в подчиненной форме Kvins Microsoft Office Access 1 30.09.2010 12:31
Обновление полей со списком katrina-n Microsoft Office Access 3 18.12.2009 20:33
Обновление данных подчиненной формы из другой подчиненной формы smoky Microsoft Office Access 2 15.08.2009 15:28
Видимость полей в подчиненной форме Sparxy Microsoft Office Access 2 02.06.2009 21:40