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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2012, 16:33   #1
Khabibula
Пользователь
 
Регистрация: 08.08.2008
Сообщений: 23
По умолчанию два и более подчиненных списка

добрый всем день!
подскажите пжл где может сидитеть ошибка, все уже перевернул, но решения так и не нашел ни в инете ни в коде.
Конечно данный пример заезжен в сети, но в основном речь идет про два списка, и тут вопросов нет но, вот более 2-х никто не описывает.
Вообщем есть три выпадающих списка, логика такая, что они каскадно обновляются и в следующем поле только те данные которые соответствуют выбранному значению . Пример вложил.
Там два способа, один с помощью VBA и второй с помощью макроса. Посодействуйте в любом.
я понимаю что пример очень простой, но все же для практики очень будет полезно.
Может у кого есть ссылка на источник информации где описывается про реализацию множества выпадающих списков, очень буду признателен.
Заранее огромное спасибо.
Вложения
Тип файла: rar 3.rar (130.7 Кб, 11 просмотров)
Khabibula вне форума Ответить с цитированием
Старый 07.05.2012, 18:39   #2
Khabibula
Пользователь
 
Регистрация: 08.08.2008
Сообщений: 23
По умолчанию

ну хорошо, может так кто-нибудь сможет подсказать, если опишу:
вообщем имеется три таблицы:

1. Группы с полями (КодГруппы, Группа)
2. Предметы с полями (КодПредмета, Предмет)
3. Преподователь с полями (КодПреподователь, Преподователь)
4. Учебный план (КодГруппы, КодПредмета, КодПреподователь, Часы)

На схеме данных "Учебный план" связан один-ко-многим с таблицами по полям с Кодами (1,2,3)

Имеется форма: Форма3

в ней имеется три поля с выпадающим списком:
1. Группа (в свойствах источник строк: SELECT Группы.Группа, Группы.КодГруппы, 2 AS orderby FROM Группы LEFT JOIN УчебныйПлан ON Группы.КодГруппы = УчебныйПлан.КодГруппы WHERE УчебныйПлан.КодПредмета=[Forms]![Форма3]![КодПредмета] OR Nz([Forms]![Форма3]![КодПредмета])=0 UNION SELECT 'Все', 0, 1 FROM MSysObjects ORDER BY orderby, Группа
2. Предмет (в свойствах источник строк: SELECT Предметы.Предмет, Предметы.КодПредмета, 2 AS orderby FROM Предметы LEFT JOIN УчебныйПлан ON Предметы.КодПредмета = УчебныйПлан.КодПредмета WHERE УчебныйПлан.КодГруппы=[Forms]![Форма3]![КодГруппы] OR Nz([Forms]![Форма3]![КодГруппы])=0 UNION SELECT 'Все', 0, 1 FROM MSysObjects ORDER BY orderby, Предмет
3. Преподователь (в свойствах источник строк: SELECT Преподователь.Преподователь, Преподователь.КодПреподователь, 2 AS orderby FROM Преподователь LEFT JOIN УчебныйПлан ON Преподователь.КодПреподователь = УчебныйПлан.КодПреподователь WHERE УчебныйПлан.КодПредмета=[Forms]![Форма3]![КодПредмета] OR Nz([Forms]![Форма3]![КодПредмета])=0 UNION SELECT 'Все', 0, 1 FROM MSysObjects ORDER BY orderby, Преподователь

В свойствах формы тоже инструкция SQL источника записей: SELECT УчебныйПлан.КодГруппы, УчебныйПлан.КодПредмета, УчебныйПлан.Часов, УчебныйПлан.КодПреподователь, Nz([Forms]![Форма3]![КодГруппы]), Nz([Forms]![Форма3]![КодПредмета]), Nz([Forms]![Форма3]![КодПреподователь]) FROM УчебныйПлан WHERE (((УчебныйПлан.КодГруппы)=Forms!Фор ма3!КодГруппы) And ((УчебныйПлан.КодПредмета)=Forms!Фо рма3!КодПредмета)) Or (((УчебныйПлан.КодПредмета)=Forms!Ф орма3!КодПредмета) And ((Nz(Forms!Форма3!КодГруппы))=0)) Or (((УчебныйПлан.КодГруппы)=Forms!Фор ма3!КодГруппы) And ((Nz(Forms!Форма3!КодПредмета))=0) And ((Nz(Forms!Форма3!КодПреподователь) )=0)) Or (((Nz(Forms!Форма3!КодГруппы))=0) And ((Nz(Forms!Форма3!КодПредмета))=0) And ((Nz(Forms!Форма3!КодПреподователь) )=0)) Or (((УчебныйПлан.КодПреподователь)=Fo rms!Форма3!КодПреподователь)) Or (((УчебныйПлан.КодПреподователь)=Fo rms!Форма3!КодПреподователь));

И естественно перечень полей в области данных. При выборе данных из выпадающего списка группы данные сортируются, во втором же выпад.списке остаются только те которые принадлежат первому. А вот дальше загвозка. При выборе второго элемента данные в третьей не отсортировываются, хотя данные в форме отбираются.


мне кажется партак во втором и третьем свойствах источника данных этих выподающих полей. Как вы считаете...? Подскажите... вскипаю уже от раздумок...
Khabibula вне форума Ответить с цитированием
Старый 07.05.2012, 23:49   #3
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

если правильно понял, то как то так ...
Вложения
Тип файла: rar 3.rar (24.7 Кб, 17 просмотров)
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 08.05.2012, 08:23   #4
Khabibula
Пользователь
 
Регистрация: 08.08.2008
Сообщений: 23
По умолчанию

Step_UA,

да совершенно верно.... четко..
спасибо огромное....

единственно вопрос:
каким образом расспределяется запрос в самой форме3?
во вложении скрин.
просто если я хочу добавить четвертое поле, то с этим запросом не понятно, кто в какой последовательности должен идти. Они там хаотично расположены.
конечно перед этим создана еще таблица, со всеми связями, а также
подскажи пжл как можно привязать 4-тый список. Во вложении исходник.
Изображения
Тип файла: jpg Снимок1.jpg (17.4 Кб, 157 просмотров)
Вложения
Тип файла: rar 3-2.rar (35.6 Кб, 9 просмотров)
Khabibula вне форума Ответить с цитированием
Старый 08.05.2012, 11:34   #5
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Хаотичное расположение - это результат преобразования из SQL к представлению в режиме конструктора ... "нормальная" запись:
Код:
SELECT УчебныйПлан.КодГруппы, УчебныйПлан.КодПредмета, УчебныйПлан.Часов, УчебныйПлан.КодПреподователь, УчебныйПлан.КодШколы
FROM УчебныйПлан
WHERE ( УчебныйПлан.КодГруппы=[Forms]![Форма3]![КодГруппы] OR Nz([Forms]![Форма3]![КодГруппы])=0)
 AND (УчебныйПлан.КодПредмета=[Forms]![Форма3]![КодПредмета] OR Nz([Forms]![Форма3]![КодПредмета])=0)
 AND (УчебныйПлан.КодПреподователь=[Forms]![Форма3]![КодПреподователь] OR Nz([Forms]![Форма3]![КодПреподователь])=0)
 AND (УчебныйПлан.КодШколы=[Forms]![Форма3]![КодШколы] OR Nz([Forms]![Форма3]![КодШколы])=0);
По четвертому списку - объясните смысловую нагрузку этого поля и связи, если имеются ...
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 08.05.2012, 12:03   #6
Khabibula
Пользователь
 
Регистрация: 08.08.2008
Сообщений: 23
По умолчанию

а четвертый список на том же принципе..... фильтруется по третьему....
я вложил в предыдущем письме...
посмотри пжл...
Khabibula вне форума Ответить с цитированием
Старый 08.05.2012, 12:53   #7
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Четвертое также ...
Вложения
Тип файла: rar 3-2.rar (26.6 Кб, 13 просмотров)
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 08.05.2012, 13:03   #8
Khabibula
Пользователь
 
Регистрация: 08.08.2008
Сообщений: 23
По умолчанию

Step_UA, все гениальное - просто....
СПАСИБО ОГРОМНЕЙШЕЕ......
Khabibula вне форума Ответить с цитированием
Старый 08.05.2012, 13:24   #9
Khabibula
Пользователь
 
Регистрация: 08.08.2008
Сообщений: 23
По умолчанию

Цитата:
Сообщение от Step_UA Посмотреть сообщение
Четвертое также ...
Step_UA, подскажи, а подчиненную форму в виде таблицы можно подвязать... или только ленточная форма может быть..?
Khabibula вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа, которая находит в массиве значения, повторяющиеся два и более раз yugik Общие вопросы C/C++ 6 08.03.2013 18:14
Написать программу, которая находит в массиве значения, повторяющиеся два и более раз, и показывает их на экран -KAZtrel- Помощь студентам 1 18.11.2011 23:25
Написать программу, которая находит в массиве значения, повторяющиеся два и более раз, и показывает их на экран -KAZtrel- Помощь студентам 2 18.11.2011 22:29
Соединить два списка в третий Иванов_ДМ Microsoft Office Excel 11 20.08.2009 08:21
Два и более условий финкции If MAKEDON Общие вопросы Delphi 7 20.01.2008 09:39