Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Office (Word, Excel, Outlook и т.д.) (http://forum.oszone.net/forumdisplay.php?f=115)
-   -   Microsoft Office Access 2007 столбец подстановки, выбор определенных значений. (http://forum.oszone.net/showthread.php?t=209950)

Призрак 27-06-2011 10:49 1702208

Microsoft Office Access 2007 столбец подстановки, выбор определенных значений.
 
Здравствуйте уважаемые участники форума.

Давно не могу решить проблему с полем подстановки в Microsoft Office Access 2007

Есть три таблицы:

1. "Контингент обучающихся", со столбцом подстановок "Контингент" с выбором фиксированных значений, столбец предоставляет возможность выбора трех вариантов (порядковые номера поставил для информации, в записях они отсутствуют!)

1. Интерн
2. Слушатель
3. Переподготовщик

2. "Учебный процесс", со столбцом подстановок "Специальность" с выбором значений из таблицы "Справочник специальностей", столбец предоставляет возможность выбора следующих специальностей: (порядковые номера поставил для информации, в записях они отсутствуют!)

1. УЭФ
2. ФТ
3. ФХ и ФГН
4. Фармация
5. КЛД
6. ФПы
7. Наркотика
8. ДЛО

3. "Справочник специальностей" содержит столбцы "КодСпециальности" и "Специальность", ее значения используются для столбца подстановок "Специальность" в таблице 2 ("Учебный процесс") для ввода специальности.

Нужно сделать так, чтобы при выборе контингента в столбце "Контингент" из первой таблицы "Контингент обучающихся" во второй таблице "Учебный процесс" в столбце "Специальность" можно было выбирать только специальности, которые соответствуют данному контингенту. Например:

1. Интерн (специальности с 1 по 3)
2. Слушатель (специальности с 1 по 8)
3. Переподготовщик (специальности с 1 по 4)

В Интернете я так и не смог найти внятную информацию по этому вопросу. Подскажите пожалуйста как решить проблему. Буду очень благодарен.

Delirium 28-06-2011 00:50 1702671

Надо сделать еще одну таблицу, в которой будут соответствия контингенту данных из других таблиц.
Например, так:
Структура таблицы:
Код:

кодКонтингента  КодУчебногоПроцесса
1  5
1  6

Т.е. контингенту Интерн соответствуют учебные процессы КЛД и ФПы и т.д. Далее сделать запрос, который будет выбирать данные на основе выбранных значений и подставлять в поле.

Призрак 28-06-2011 08:49 1702756

Вложений: 2
Вроде бы уже близко к пониманию, но мне все еще не совсем понятны некоторые важные моменты:

1. В Вашей таблице какой формат должен быть у полей - счетчик или числовой?

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

1.1. "Справочник контингента" содержащую столбцы "КодСпрКонтингента" и "Контингент"
1.2. "Справочник специальностей" содержащую столбцы "КодСпрСпециальности" и "Специальность"

3. С какими таблицами должны быть связи? И какой запрос должен быть создан для связи между таблицами? Кроме того я подозреваю, что в столбцах подстановки "Контингент" таблицы "Контингент обучающихся" и "Специальность" таблицы "Учебный процесс" при той структуре таблицы что Вы предложили будут выбираться лишь цифры, а нужно чтобы выбирался текст.

Во втором вложенном файле указана схема данных БД с указанием всех существующих на данный момент связей, названий таблиц и столбцов (В таблице "Учебный процесс" как раз выделен тот столбец, где предполагается создать столбец подстановок с выбором конкретного значения, соответствующего выбору в столбце "Контингент" таблицы "Контингент обучающихся"

Delirium 28-06-2011 09:43 1702775

показываю пример "на пальцах"
Код:

Таблица Пользователи
id name
1 Иванов Иван
2 Петров Петр

Код:

Таблица Специальности
id name
1 ЭТФ
2 ФКТ
3 МУИ
4 ОППР

И наконец третья, связная таблица, в которой будут соответствия между ними:
Код:

Таблица Соответствия
ПользовательИД    СпециальностьИД
1  1
1  3

Т.е. мы привязали в Иванову только ЭТФ и МУИ. Привязали образно. Для того, чтобы в списке выпадали только ЭТФ и МУИ, вместо всего списка, надо написать небольшой запросик, типа такого

Код:

select Специальности.* from Специальности, Соответствия, Пользователи where
специальности.id=соответствия.СпециальностьИД and
Пользователи.id = соответствия.ПользовательИД   
and Пользователи.name='Иванов Иван'

Запрос выберет все данные из специальности, где пользователь равен Иванову. Вот как то так. По такой же аналогии и в твоем примере.

Призрак 30-06-2011 09:21 1704071

Вложений: 1
Все равно мне непонятно. Твой запрос конечно понятен и работает, но мне нужна немного другая задача, а следовательно более сложный запрос. Попробую поставить задачу следующим образом:

Всего в пробной базе данных 5 таблиц:

1. Контингент, содержит столбцы:

Код:

idКонтингента Контингент
1 Интерн
2 Слушатель
3 Переподготовщик

2. КонтингентОбучающихся, содержит столбцы:

Код:

idКонтингОбуч ФИО Контингент (Контингент является столбцом подстановки из таблицы Контингент)
1 Иванов Иван Иванович Интерн
2 Петров Петр Петрович Слушатель

3. Специальности, содержит столбцы:

Код:

idСпециальности Специальность
1 УЭФ
2 ФХ
3 ФТ и ФГН
4 Фармация
5 КЛД
6 ФАПы
7 Наркотика
8 ДЛО

4. Соответствия, содержит столбцы:

Код:

КонтингентID СпециальностьID (для попытки вывода в запросе не числовых значений а текста столбец СпециальностьID является столбцом подстановки из таблицы Специальности)
1 УЭФ
1 ФТ
1 ФХ и ФГН
2 УЭФ
2 ФТ
2 ФТ и ФГН
2 Фармация
2 КЛД
2 ФАПы
2 Наркотика
2 ДЛО
3 УЭФ
3 ФТ
3 ФТ и ФГН
3 Фармация

5. УчебныйПроцесс, содержит столбцы:

Код:

idУчПр ФИО (является столбцом подстановки из таблицы КонтингентОбучающихся) Специальность (здесь и предполагается создать поле подстановки для выбора значений, то есть запрос)
1 Иванов Иван Иванович
2 Петров Петр Петрович

Задачи стоят такие:

1. Выбирать значения в запросе не из таблицы Контингент, а из таблицы КонтингентОбучающихся из столбца Контингент;
2. Обеспечить привязку записей из таблицы КонтингентОбучающихся строго к записям таблицы УчебныйПроцесс, т.е. к полю ФИО, являющемуся столбцом подстановки из таблицы КонтингентОбучающихся для того, чтобы избежать ошибочного выполнения запроса когда поле ФИО таблицы УчебныйПроцесс ничего не содержит (или сделать поле Специальность неактивным пока не введены данные в поле ФИО);
3. Выбирать значения не фиксированные, как в твоем запросе, а только те, которые соответствуют выбранному в поле таблицы КонтингентОбучающихся столбца Контингент.

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

Delirium 01-07-2011 01:18 1704841

Возник наводящий вопрос. А данные будут вводиться непосредственно в режиме редактирования данных таблицы или же будет форма для заполнения? В зависимости от ответа и решения будут разные.

И почему в УчебномПроцессе и КонтингентеОбучающихся есть 2 одинаковых поля ФИО? Если во второй таблице подстановка, то и поле надо было назвать idФИО, во избежание путаницы

Призрак 01-07-2011 08:26 1704894

Подскажи пожалуйста 2 варианта решения проблемы (и с таблицей и с формой), воспользуюсь и тем и другим. Поля переименую по твоему совету.

Призрак 07-07-2011 21:42 1709162

Ну что, так и нет ответа? Я так и знал. Это так называемый форум "компьютерной помощи" где сидят так называемые "специалисты", ни на что оказывается неспособные. Я задал конкретный вопрос и хочу получить на него ответ, неужели никто не знает решение проблемы? Проще наверно взять специальную литературу и разобраться самому. В темку заходили и просматривали ее 197 ламеров но ни один не дал ответа. Я уверен что после моего поста начнутся вопли, что типа почему мы должны тебе помогать, тратить свое время? Ответ: так вас силком никто на форум не тащит! Просто помощь нужна была срочно, а ее здесь оказывается нету, только на простые вопросы способны отвечать, которые за 5 минут решаются.

Delirium 08-07-2011 01:01 1709269

Призрак, а ты не думаешь, что тут сидят люди, которые тоже работают и отвечают только в свободное от работы время?
Цитата:

Цитата Призрак
помощь нужна была срочно »

Цитата:

Цитата Призрак
Давно не могу решить проблему »

Малость не вяжутся эти высказывания.
Я дал тебе направление, разложил по полочкам как и что делать, и что в итоге получил?
Цитата:

Цитата Призрак
Подскажи пожалуйста 2 варианта решения проблемы (и с таблицей и с формой), воспользуюсь и тем и другим. »

Ты хотел не подсказок, а полного решения, а для полного решения надо разбирать твою структуру, писать скрипты, проверять работу, а это не пара минут. У меня сейчас нет свободного времени.


Время: 22:56.

Время: 22:56.
© OSzone.net 2001-