1 / 1 / 0
Регистрация: 12.07.2015
Сообщений: 21
1

Зависимые поля (список значений одного поля зависит от значения другого поля)

20.07.2015, 14:49. Показов 29562. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, Уважаемые участники форума,

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


Описание:
Имеется БД с таблицами: Товары, Услуги, Клиенты, ЗаказыТоваров и прочее.

Проблема в том, что таблица "Товары" содержит очень разношерстный ассортимент, пример наименований:
Препарат Эпин, Горшок для Орхидей, Галька, Букет из роз 17А, Ель Тянь-Шаньская.

Я хочу (заморочиться и) сделать что-то вроде каталога.

Сначала я думал так, что можно сделать таблицу "Товары", в которой будут поля содержащие КодРаздела, КодКатегории, КодГруппы, КодФормы из одноименных таблиц (Разделы, Категории и т.д.), а потом при создании форм всё волшебным образом будет автоматом подстраиваться.

То есть:
Будет Форма "Товары", где можно будет удобно просмотреть все имеющиеся позиции используя выпадающие списки, а также добавлять новые позиции.
При выборе Раздела "Посадочный материал" в последующих вып.сп. отображались лишь те строчки которые принадлежат посадочному материалу => В вып.сп. "Категория" соответственно будут такие строки как:
Водные, Цветущие, Лиственные, Почвопокровные, Травянистые, Хвойные и так далее.


Большая просьба, подскажите как можно мне это реализовать.

Заранее благодарю.
Вложения
Тип файла: rar Database4.rar (67.0 Кб, 124 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.07.2015, 14:49
Ответы с готовыми решениями:

Как связать между собой два поля (список значений одного поля зависит от значения другого поля)
Есть таблица: предмет, КодТипаМатериала (список), КодМатериала (список) для примера: ...

Список значений одного поля зависит от значения другого поля
Добрый день, я просто не знаю к кому обратиться. В программировании я полный нуль, не мог подумать,...

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

Данные из одного поля должны влиять на то, из какой таблицы будет выбираться значение другого поля
Допустим, что у меня есть форма. на ней 2 поля: дисциплина и тема занятия. я выбрал значение поля...

34
8757 / 5604 / 576
Регистрация: 27.03.2013
Сообщений: 19,040
20.07.2015, 15:02 2
Цитата Сообщение от kja Посмотреть сообщение
...подскажите как можно мне это реализовать...
Показать не получается. т. к. не открывается и типа форматик не тот, но подсказать можно попробовать.
Правда сразу вскакивает вопрос - Форма, где будет происходить фильтрация - Одиночная (Тут довольно просто) или табличная (тут посложнее будет, нужно видеть)
0
1 / 1 / 0
Регистрация: 12.07.2015
Сообщений: 21
20.07.2015, 15:13  [ТС] 3
Здравствуйте, PuhKMV,


спасибо за ответ.

Цитата Сообщение от PuhKMV Посмотреть сообщение
Показать не получается. т. к. не открывается и типа форматик не тот, но подсказать можно попробовать.
Я работаю в Access 2010...

Цитата Сообщение от PuhKMV Посмотреть сообщение
Форма, где будет происходить фильтрация - Одиночная (Тут довольно просто) или табличная (тут посложнее будет, нужно видеть)
Скорее всего одиночная (как понимаю, на одну позицию товара - своя страничка)
0
8757 / 5604 / 576
Регистрация: 27.03.2013
Сообщений: 19,040
20.07.2015, 15:46 4
В головном поле со списком, обзовем его Поле1, выбираете нужное значение, в событии - После обновления - у данного поля пишите процедуру :
Me.Поле2.Requery
типа что бы обновилось Поле2
У поля со списком - Поле2 в источнике строк, с помощью построителя запросов входите в режим конструктора и у поля связи в - Условие отбора
Пишите фильтр, типа такого, но с вашими именами
[Fopms]![ИмяВашейФормы]![Поле1]
Закрываете крестиком.
Теперь после обновления Поле1, обновится фильтр в Поле2, где если все правильно сделали покажется только те значения, которые соответствуют Поле1 (Типа раньше введены в подчиненной форме, а не в таблице).
0
1 / 1 / 0
Регистрация: 12.07.2015
Сообщений: 21
20.07.2015, 15:53  [ТС] 5
Огромное спасибо PuhKMV,

сейчас попробую.

(в приложении схема, на всякий случай)
Миниатюры
Зависимые поля (список значений одного поля зависит от значения другого поля)  
0
8757 / 5604 / 576
Регистрация: 27.03.2013
Сообщений: 19,040
20.07.2015, 16:04 6
Цитата Сообщение от kja Посмотреть сообщение
схема, на всякий случай
Не знаю какая у вас там задумка, но по идее то не так долно быть, а типа так
Разделы делятся на Категории,
Соответственно - Разделы - Основная , Категории - Подчиненная
Создаем по таблице - Разделы одиночную форму, и вставляем в нее ПодчиненнуюФормутабличного вида, - Категории, указываем Какое поле Основное и какое Подчиненное
Теперь ни когда не сможете перепутать.
Ввели в поле - Раздел - Цветы
В подчиненной вводите,
ромашка
Василек
Роза
В основной переходите на другую запись
Деревья
в подчиненной
Дуб,
Береза и т. д.
Вот теперь у вас поля будут по значению ключевого поля зависеть друг от друга и ни чего не перпутается.
Так же если нужно, то и Таблицу - Категории делить На типы или виды почти до бесконечности.
Это будут типа справочники.
0
1 / 1 / 0
Регистрация: 12.07.2015
Сообщений: 21
20.07.2015, 16:26  [ТС] 7
Ещё раз очень Вас благодарю, PuhKMV.

По-большому счёту, это Excelовский фильтр.

Это будут типа справочники.
А потом, как я понял я из всех этих "под форм" делаю одну большую форму?
И вариант с запросом уже отпадает?
Миниатюры
Зависимые поля (список значений одного поля зависит от значения другого поля)  
Вложения
Тип файла: xlsx Таксономия - измененная.xlsx (19.4 Кб, 21 просмотров)
0
8757 / 5604 / 576
Регистрация: 27.03.2013
Сообщений: 19,040
20.07.2015, 16:40 8
Цитата Сообщение от kja Посмотреть сообщение
я из всех этих "под форм" делаю одну большую форму?
Не совсем так. Все зависит от того как вы это представляете БД и как намерены с ней работать.
К примеру если как у вас на 1-м рисунке таблицы с правой стороны имеют Иерархическую структуру, типа
Разделы подразделяются на Категории
Категории подразделяются на Группы
Группы на Формы
Формы на Виды
Виды на Названия, типа это будут - Справочники
А уже чисто работать будете только с формой - Товары, то для удовства выбора чисто по иерархии это будет очень даже удобно, т. к. ни чего лишнего просто не сможете выбрать и списки будут меньше, что повлияет на производительность труда, как говорится Долго запрягаешь 1 раз, но потом быстро едешь.
Но это будет немного сложнее, типа муторней, так как Для каждой таблицы нужно будет создавать Основную и Подчиненные формы, но за то не будет ошибок.
Заказы, клиенты и другие таблицы, это уже другой разговор, т. к. что бы чего то продать, нужно сначала правильно ввести товар.
1
1 / 1 / 0
Регистрация: 12.07.2015
Сообщений: 21
20.07.2015, 16:41  [ТС] 9
А схему отношений нужно будет менять? Или пусть так и остается, через таблицу "Товары"?
У меня тут есть сумасшедший вариант:
Миниатюры
Зависимые поля (список значений одного поля зависит от значения другого поля)  
0
1 / 1 / 0
Регистрация: 12.07.2015
Сообщений: 21
20.07.2015, 16:54  [ТС] 10
Я тогда сейчас попробую для каждой таблицы создать Основную и Подчиненную формы.

У меня есть похожая форма Заказы Товаров.
Получается делаю так, выбираю Мастер форм, добавляю две таблицы и определяю которая из них будет основной.

А потом создаю Форму "Товары". Только я сейчас не понимаю, как я смогу в этой форме воспользоваться подготовленными формами Раздел, Категорияи т.д.?
Миниатюры
Зависимые поля (список значений одного поля зависит от значения другого поля)  
0
1 / 1 / 0
Регистрация: 12.07.2015
Сообщений: 21
20.07.2015, 17:35  [ТС] 11
К сожалению, обнаружилась проблема.
Подчинённая таблица "Категории" загружает данные из таблицы "Товары", и там соответственно в строчках следующее:
Водные
Водные
Лиственные
Хвойные
Лиственные...


0
8757 / 5604 / 576
Регистрация: 27.03.2013
Сообщений: 19,040
20.07.2015, 19:18 12
Цитата Сообщение от kja Посмотреть сообщение
Подчинённая таблица "Категории" загружает
Я вас в самом начале специально переспросил
Одиночная или табличная формы, вы ответили. что одиночная.
В табличной нужно писать более сложные процедуры для кахдого поля
На - Вход
На - Выход и
На - Текущая запись формы.
2
8757 / 5604 / 576
Регистрация: 27.03.2013
Сообщений: 19,040
20.07.2015, 19:32 13
Лучший ответ Сообщение было отмечено kja как решение

Решение

kja, Смотрите пример
В начале Пишите - Категории
Потом для каждой категории - свои Типы
У каждого Типа - свое Наименование
Это типа справочники приблизительно возможных товаров
В форме - Каталог, типа Прайс-Листа для каждого поставшика иерархически - Слева на Право вводите товар какой он и только он вам поставляет и по какой цене.
И уже в форме - Поставки или заказы поставщику вы мигом выбираете возможный товар и его количество.
Вложения
Тип файла: rar Товар-Каталог-04.rar (171.3 Кб, 284 просмотров)
1
Эксперт MS Access
26784 / 14463 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
20.07.2015, 20:14 14
Цитата Сообщение от kja Посмотреть сообщение
Таксономия - измененная.xlsx
Типичная тривьюшка. Вот пример, который относительно нетрудно переделать для своих нужд
Вложения
Тип файла: rar TreeView-Уровни.rar (33.9 Кб, 368 просмотров)
3
1 / 1 / 0
Регистрация: 12.07.2015
Сообщений: 21
21.07.2015, 06:04  [ТС] 15
Цитата Сообщение от PuhKMV Посмотреть сообщение
Я вас в самом начале специально переспросил
Пардон, PuhKMV, я значит представил себе одно, а на деле оно другое.
0
1 / 1 / 0
Регистрация: 12.07.2015
Сообщений: 21
21.07.2015, 07:05  [ТС] 16
Цитата Сообщение от PuhKMV Посмотреть сообщение
kja, Смотрите пример
спасибо большое, PuhKMV,
эта БД
Цитата Сообщение от PuhKMV Посмотреть сообщение
Вложения
Товар-Каталог-04.rar (171.3 Кб, 1 просмотров)
__________________
очень крутая.

Я бы хотел что-то вроде такого или такого
Миниатюры
Зависимые поля (список значений одного поля зависит от значения другого поля)   Зависимые поля (список значений одного поля зависит от значения другого поля)  
0
1 / 1 / 0
Регистрация: 12.07.2015
Сообщений: 21
21.07.2015, 07:30  [ТС] 17
Огромное спасибо, mobile, Ваш вариант тоже потрясный.
Получается, для этого нужно связать таблицу с таблицей по очереди и сделать запросы.
Макросы я не нашел.

Добавлено через 6 минут
Извиняюсь, какой то глюк с ответами произошел.

Добавлено через 5 минут
PuhKMV, выходит, здесь
Цитата Сообщение от PuhKMV Посмотреть сообщение
Вложения
Товар-Каталог-04.rar (171.3 Кб, 2 просмотров)
__________________
нужно только связать таблицы по очередности, вписать коды основных таблиц в подчинённые, ни макросов, ни запросов нет?
0
8757 / 5604 / 576
Регистрация: 27.03.2013
Сообщений: 19,040
22.07.2015, 08:38 18
Цитата Сообщение от kja Посмотреть сообщение
...Я бы хотел что-то вроде такого или такого...
Вторая картинка соответствует тому как я в начале расписывал для одиночной формы, но правильно ввести данные сможете только в одиночной, а просматривать в табличной, тип визуально.

Добавлено через 13 часов 7 минут
В принципе и первая пойдет, но это на сколько я понимаю ваш замысел должна быть форма основанная на таблице - Каталог или как у вас - Товары, где верхние поля со списком для фильтрации при выборе наименования, + цены, а уже в Продажах количество и даты продаж..
1
8757 / 5604 / 576
Регистрация: 27.03.2013
Сообщений: 19,040
22.07.2015, 11:17 19
kja, Вот ловите, накидал примерчик как бы я начал создавать справочник растений, дабы не опрофаниться и не запутаться при продаже посадочных растений и цветочных букетов.
Вначале заполняем разделы, потом категории.
И так вплоть до наименований.
Посмотрите по Схеме данных.
Вложения
Тип файла: rar Растения-01.rar (27.1 Кб, 261 просмотров)
1
1 / 1 / 0
Регистрация: 12.07.2015
Сообщений: 21
22.07.2015, 13:49  [ТС] 20
Цитата Сообщение от PuhKMV Посмотреть сообщение
kja, Вот ловите, накидал примерчик
PuhKMV, я в шоке! Спасибо Вам огромное!

Как раз, хотел Вас спросить.

Я начал изменять код и строить последующие списки.
Вышла у меня ошибка Runtime Error 3070

Изначальный код без 3-го списка ВыборГруппы:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub ВыборКатегорииТовара_AfterUpdate()
    Поиск записи, соответствующий этому элементу управления
    Dim rs As Object
 
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[Код_ТипаТовара] = " & Str(Nz(Me![ВыборКатегорииТовара], 0))
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
    
    Me.Код_ТипаТовара.Requery
 
End Sub
 
' -----------------------
 
Private Sub Код_ТипаТовара_AfterUpdate()
    
    Dim rs As Object
 
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[Код_ТипаТовара] = " & Str(Nz(Me![Код_ТипаТовара], 0))
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
       
End Sub
Изменил я второй список и написал третий:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Private Sub ВыборКатегорииТовара_AfterUpdate()
    Поиск записи, соответствующий этому элементу управления
    Dim rs As Object
 
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[Код_ТипаТовара] = " & Str(Nz(Me![ВыборКатегорииТовара], 0))
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
    
    Me.Код_ТипаТовара.Requery
 
End Sub
 
' -----------------------
 
Private Sub Код_ТипаТовара_AfterUpdate()
    
    Dim rs As Object
 
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[ВыборГруппы] = " & Str(Nz(Me![Код_ТипаТовара], 0))
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
       
    Me.ВыборГруппы.Requery
 
End Sub
 
' -----------------------
 
Private Sub ВыборГруппы_AfterUpdate()
    
    Dim rs As Object
 
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[ВыборГруппы] = " & Str(Nz(Me![ВыборГруппы], 0))
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
       
End Sub
Я также сделал запрос для третьего списка.


Объясните пожалуйста, в чём дело?
Миниатюры
Зависимые поля (список значений одного поля зависит от значения другого поля)  
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.07.2015, 13:49
Помогаю со студенческими работами здесь

Зависимость списка значений поля от другого поля со списком
Добрый день, вечер, ночь! Подскажите пожалуйста,можно ли блокировать определенные значения поля со...

Изменение значений поля в зависимости от другого поля
Всем привет! Очень давно не работала в аксе, все забыла, вопрос легкий, но чет не получается...

Отображение поля в зависимости от значения другого поля
Уважаемые знатоки, имею такую ситуацию поле №1 имеет выбор по выпадающему списку из двух...

Значения поля формы по значению другого поля
Здравствуйте! У меня следующая ситуация: создаю в Access базу данных для колл-центра. Смысл её -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru