Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > фильтрация комбобокса по значению другого


Автор: neosapient 15.5.2008, 16:39
фильтрация комбобокса по значению другого
связи один-ко-многим, поля с списком


Добрый день.

Я новичок в MS Access, так что господа магистры - дайте разжеванный ответ, как решить проблему... над которой бьюсь уже полторы недели :(

Есть 3 таблицы: "Больницы - Отделения - Врач"

Пример в приложении
Вот схема иерархии связей таблиц
http://ipicture.ru/

Создал форму (Врач) для внесения врачей. В ней два поля со списком - Больницы и Отделения.

Список больниц определяться запросом,
Код

SELECT Больницы.ID, Больницы.Больница FROM Больницы; 


Список отделений в больнице определяться запросом,
Код

SELECT Отделения.ID, Отделения.БольницаID, Отделения.Отделение FROM Отделения WHERE (((Отделения.БольницаID)=Forms!Врач!БольницаID)); 


При каждой смене содержимого поля со списком "Больницы", выполняется обновление поля со списком "Отделения"
Код

Private Sub БольницаID_Change()
    ОтделенияID.Requery
End Sub



При добавлении нового драча:
1)  Если выбрать Отделение из списка Отделений, при неуказаной Больнице, то на автомате выбираться Больница.
Это надо запретить.
2)  Если выбрать Больницу, раскроется список доступный Отделений данной Больницу. Но выбрать Отделение мне не дадут, появится сообщение:
http://ipicture.ru/
" Текущее поле должно совпадать с ключем связи '?' в таблице со стороны 'один' соотношения 'один-ко-многим'. Введите на стороне 'один' запись с требуемым значением ключа связи, а затем создайте запись с тем же значением ключа в таблице на стороне 'только многие' "
КАК ОБОЙТИ ЭТО ПРЕДУПРЕЖДЕНИЕ!!! Ведь вполне логично, сначала выбрать Больницу, а затем Отделение в этой Больнице.

Помогите! Скорректируйте пример как надо и опишите что?, как? и почему? Вы это правили...

Заранее огромное спасибо !

P.S.
Расширяю исходник "Больницы - Отделения":
http://forum.vingrad.ru/topic-147160.html 

Автор: Akina 15.5.2008, 18:43
См. аттач.

Автор: neosapient 16.5.2008, 02:54
 smile  работает

Цитата

См. аттач. 

Предельно разжевано  smile 
В чем некорректность моего подхода?


----
P.S.
Вопрос: после прочтения каких книжек/статей появляется правильное восприятия того, как нужно писать скрипты в Офисе/Акцессе ?

----
P.P.S.
За код-  спасибо
НО посмотрю завтра, а то спать уже пора.

Автор: Akina 16.5.2008, 08:14
Цитата(neosapient @  16.5.2008,  03:54 Найти цитируемый пост)
В чем некорректность моего подхода?

В идеологии. Сделана попытка внесения записей непосредственно в таблицу, пусть и через форму.
В моем же случае добавление выполняется свободной формой по нажатию кнопки. При этом выполняются все необходимые проверки (я сделал проверку на не-ввод фамилии), в случае проблем добавления не происходит и выводится сообщение об ошибке (сообщения могут быть разными в зависимости от того, какая проверка не пройдена), при удаче пользователь видит это явно (я сделал очистку поля фамилии).
Для просмотра введенных данных следует генерировать необходимые отчеты, введя сперва через форму условия отбора и сортировки, для корректировки - соответствующие формы.

Автор: neosapient 29.5.2008, 13:33
То что было сделано - добовление строчки в таблицу.
Можешь привести пример формы для редактирования (корректировки) записей в таблице Врач ?..
(При перемещении от одной записи в таблице к другой не получается правильно отображать содержимое комбобоксов)
 smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)