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


Автор: Nikolya 20.4.2007, 09:36
Помогите решить маленькую "головоломку". Есть поля со списками: Больница и Отделения. Как сделать так: При выборе больницы из списка, во втором списке (который с отделениями) появлялись бы отделения относящиеся только к выбранной больнице. Отвечайте пожалуйста по подробнее - что куда подставлять. А головоломка потому, что мучаюсь уже долго с ней и никто помочь не может. Надеюсь на Вас.

Автор: Akina 20.4.2007, 12:39
Смотреть в аттаче:

Схему данных
Источник данных поля "Отделения"
Программу макета формы

Автор: Nikolya 20.4.2007, 18:12
Спасибо Akina огромное, ты мне очень очень помог. Ты просто гений. Я так долго искал решение этой проблемы. Я в восторге. Прямо таки камень с души упал. А форум Ваш класненький, долго искал что-то стоящее в сети.

Автор: alexIrish 25.4.2007, 16:45
A у меня  в ComboBox ( forms!CapacityForm) poстоянно висит первое значение.

Attached file removed

Автор: Akina 25.4.2007, 17:31

M
Akina
Следовало бы снять защиту с базы, прежде чем ее выкладывать. Удалите ограничения и замените аттач.

Автор: alexIrish 25.4.2007, 20:38
Прошу всех извинить за secured базу. 
здесь все снято, нo блин как легко ставить защиту и как не легко потом ее снять.

все смотрим почему так и советуем.

Спасибо

Автор: Akina 25.4.2007, 21:55
Не понимаю где собсно проблема. В поле WHS selection выбираем нужный, после чего в поле LocationSelect становятся доступны только те итемы, которые в таблице соответствуют выбранному в первом поле значению... что не так?

Автор: alexIrish 26.4.2007, 00:41
Не так то, что активный итем, всегда только первый из списка. Если выбрать WHS Sercom, то CM. А нужно что бы в окне оставался выбранный. 
Т.е если для Sercom я выбрал LM то в поле должен быть LM а не CM. In your example with hospitals you can select department as well:)
Блиn надo клаву русскую поставить. Достал транслит.

Автор: Akina 26.4.2007, 07:46
Цитата(alexIrish @  26.4.2007,  01:41 Найти цитируемый пост)
нужно что бы в окне оставался выбранный

Этого быть НЕ должно. Хотя бы потому что при изменении значения первого поля может оказаться, что значение второго с ним несовместимо.

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

Автор: alexIrish 26.4.2007, 10:53
ОК. Вы v форме справа поля видели. Так вот идея в том что бы в поле WHS selection Выбрали слад, поля слева показали результат для етого склада. А полe LocationSelect нужно выбрать одно значение иz доступных для етого склада и получить 
результат в поляx напротив. Ja поетому и спрашивал как в текстовое поле запихнуть результат запроса. Воt сейчас думаю над етим тоже.

Автор: Akina 26.4.2007, 11:21
Цитата(alexIrish @  26.4.2007,  11:53 Найти цитируемый пост)
идея в том что бы в поле WHS selection Выбрали слад, поля слева показали результат для етого склада

Во-первых, все-таки справа. Во-вторых, понять, что тебе там надо получить, весьма проблематично... если, например, что есть Total Locations, еще более или менее понятно, то как определять которые из них used - на основе имеющихся данных просто нереально....

Автор: alexIrish 26.4.2007, 13:58
Да нет же! 
Речь идет о плях со списком ( а точнее о поле) То что справа(действительноsmile)  ето уже после. Вы на свой промер про Больницы посмотрите: Выбираем больницу, кликаем на нее и видим выбранный результат в окне. Идем во второй комби, видим отделения для выбранной больницы. Выбираем нужное- клик, и видим в окне то на что кликнули.

А у меня получается во втором комби, нa что ни кликай а получишь первоe в спискe значение (Для Sercom -> CM). 

Автор: Akina 26.4.2007, 14:14
Начинаем сравнивать...

1) В таблице WHS Capacity отсутствует ключевое поле
2) Отсутствует схема данных


Автор: alexIrish 27.4.2007, 01:13
Спасибо Akina. smile 
Все поправил, работает.

теперь сам smile 
Но думаю до скорого. Работка предстоит большая 

Автор: alexIrish 3.5.2007, 11:43
Zдравствуйте. 
А можно ли сделать тажe самое нa основе запросов? Т.е. row source получается запрос к запросу. 
А есче, как передать значениe переменной в запрос.
Обьясняю: В одном спискe выбирается значение и присваивается текстовой переменной. А другой список отображает записи выбранные на из сложного запроса с фильтром по етой переменной.
Или как вариант: Если для формы объявить переменную как recordset, то можно ее потом использовать как источник данных для списка на форме.

Thank you.

Автор: Akina 3.5.2007, 12:01
А какая разница-то? не въехал...

Автор: alexIrish 3.5.2007, 13:05
Vот и я нe въехал.
Если делаю с таблицами тo все ок, но опять жe приходиться их связывать.
А если их связать нe возможно, потому однa иz них обновляется раз в неделю, то нe получется сделать так что бы на основе выбранной строки иz одного поля со списком в другом выдавались значения s условием выбора по первому. 
Пример: первый список - имена операторов погрузчиков. Истоник - таблица с двумя полями : ИД и логон.
Второй список: 4 столбца-> дата, логон, кол-во операций, кол-во предментов. Источник: запрос, который выбирает нужные данные из таблицы которая импортируется из SAP. Данные каждоего импорта разные. 
Так вот, если в Row source второго написать:[code=sql]
Select Query.Date, Query.Log, Query.[Oper Q-ty],Query.[Item q-ty]
From Query
Where Query.Log=[Forms]![FromName]![ListBox1Name]
[code=sql]
to  внем ничего не будет.
Если условие убрать, то он выдает полный recordset запроса.
Я ввел техтовую переменную Лог=[Forms]![FormName]!ListBox1.column(1)
Она получает правильное значение(проверено через Msgbox)
А как передать ее в запрос не знаю. 
Возможно есть какое нибудь другое решение, посоветуйте.

Автор: Akina 3.5.2007, 13:27
Цитата(alexIrish @  3.5.2007,  14:05 Найти цитируемый пост)
А если их связать нe возможно

Связать возможно всегда. Не в схеме данных - так в макете запроса.

Цитата(alexIrish @  3.5.2007,  14:05 Найти цитируемый пост)
Возможно есть какое нибудь другое решение, посоветуйте.

Макет - в студию. Из объяснений "на пальцах" я мало что понял.

Автор: alexIrish 3.5.2007, 14:39
Here you go.
В форме PAForm List18. dолжен показывать записи дла выбранного слева оператора. А потом ещe будет ныжна возможность вывести всех операторов за неделю выбранную слева или по введенной дате.

Dа и v другой формe с SStab.tab nи фига нe выходит. 
У меня пока нe хаватает ни знаний ни практики.

Спасибо.

Автор: alexIrish 4.5.2007, 14:20
Макеt в студии.
Я  на выходныe ухожу 3 дня домa биться буду. 
И поясню, что данные для PPTable1 и PPTable2 беруться из Allrecords
(Locations=count(Allrecords.[Source bin],ItemsPicked=SUM([Source taget]),
[TO Q-ty= count (DISTINCT [TO number]). 
который в свою очередь инпортируется из SAP и содержит ~50-70 тыс. записей. к тому же и обновляется еженедельно. Накапливать их нет смысла. Лучше посчитать что надо и занести в таблицы. А с них уже работать.

Спасибо за внимание.

Автор: Akina 4.5.2007, 15:24
Цитата(alexIrish @  3.5.2007,  15:39 Найти цитируемый пост)
 форме PAForm List18

List18 - это Caption контрола Label19.
Как я понимаю, речь о ListBox по имени Result.

Для получения того что тебе надо, перед строкой 
Код

Result.Requery

добавь строку
Код

Result.RowSource = "SELECT PAFormQ.Locations, PAFormQ.ItemsPicked, PAFormQ.[TO q-ty], PAFormQ.User, PAFormQ.ConfirmDate FROM PAFormQ WHERE (((PAFormQ.User)='" & OperList.Column(1) & "'));"

А "Источник данных" этого ListBox по имени Result в макете формы можно вообще оставить пустым.

Автор: alexIrish 4.5.2007, 16:37
Господа, вы просто чудо!

Всем спасибо и хороших выходных!!! smile 

Автор: Ole_H 4.3.2008, 12:39
Уважаемый Akina!

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

возьмем пример с больницей и отделением - 

но я хочу сделать это не в форме, а в таблице - выпадающий список в поле "Больницы", а далее, на основании нашего выбора - в следующем поле "Отделения" - выбирать отделения, уже соответствующие выбранной больнице.

зараннее благодарен!!!

Автор: bopoha 4.3.2008, 15:24
В таблице такое не удастся... Только на форме. Форма может быть в режиме табилцы ;-).

Автор: Ole_H 4.3.2008, 15:40
Цитата(bopoha @ 4.3.2008,  15:24)
В таблице такое не удастся... Только на форме. Форма может быть в режиме табилцы ;-).

спасибо, bopoha!
а как же можно сделать эту форму в виде таблицы?

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




Автор: Akina 4.3.2008, 15:56

M
Akina
Ole_H, нарушение Правил Форума остается нарушением вне зависимости от побуждений. На первый раз устное предупреждение.

Тема закрыта.


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