Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вопросы по таблицам.
 
 автор: Lukas   (18.10.2008 в 00:36)   личное сообщение
 
 

Ошибка, извините не на ту педаль нажал.

  Ответить  
 
 автор: Гамлет   (18.10.2008 в 00:55)   личное сообщение
22 Кб.
 
 

Справочник ТОВРЫ имеет много товаров, чтобы упростить заполнение подч.формы заказы (Orders) мы создаем комбо (Group) при помощи которого задаем группу товаров после чего соответственно в подчиненном списке TOVARID остаются товары заданной группы.

Но при этом могут быть два варианта интерфейса формы заказов (Orders) и (Orders 2)

Недостаток первого
ширину первого стлбца подчиненного списка TOVARID установл. =0 - тогда в подчиненном списке TOVARID видем не код, а название товара - но только тех групп товаров которые установлены в критерии отбора "категории" (Group) см. форму Orders

Недостаток второго
ширину первого стлбца подчиненного списка TOVARID установ. <>0 - тогда на форме в подчиненном списке будем видеть коды товаров - по всем "категориям" (коды не исчезают в отличии от названий из 1-го интерфейса), но нужно добавлять в форму поле с названием товара. Получается нужно иметь лишнее поле (название товара). см. форму Orders 2

Я сейчас использую 2-ой интерфейс от которого хочу отказаться - лишнее поле (название товара).
Но чтобы использовать 1-ый интерфейс сталкиваюсь с проблемой того что в подчиненном списке TOVARID выводятся названия товара только тех групп которые установлены в критерии отбора "категории" (Group)
Отсюда вопрос что можно сделать чтобы нормально использовать 1-ый интерфейс т.е.
что нужно для того чтобы видеть все названия товаров в подчиненном списке TOVARID

см. аттач.

  Ответить  
 
 автор: Lukas   (18.10.2008 в 01:10)   личное сообщение
 
 

Ответ простой:
1. Источник строк комбобокса - товары всегда должен быть полным (весь справочник).
2. Выбор товара надо осуществлять из справочной формы, где должен быть фильтр по группе.
Желательно, что бы значение фильтра сохранялось при последующем вызове формы-справочника.
Можно использовать значение комбобокса группы товаров, для передачи значения группы товаров через OpenArgs форме-справочнику товаров, где на основании переданного аргумента открытия производится фильтрация. Либо сразу открывать справочную форму с фильтром (на основе значения комбобокса группы товаров), если она ленточная.

  Ответить  
 
 автор: Гамлет   (18.10.2008 в 01:20)   личное сообщение
 
 

Давай по порядку
1.
Источник строк комбобокса - товары всегда должен быть полным (весь справочник).

Ну почему же тогда в форме Orders видны все значения, а в Orders2 видны толко те которые соответствуют фильтрующему списку Group

  Ответить  
 
 автор: Lukas   (18.10.2008 в 01:35)   личное сообщение
 
 

У меня в форме Orders в комбобоксе Tovar видны только товары из группы, выбранной в комбобоксе группы товаров (Group).
При источнике строк:

SELECT [Tovar].[ID], [Tovar].[Tovar] FROM Tovar WHERE ((([Tovar].[Group])=[Forms]![Orders]![Group])) ORDER BY [Tovar].[Tovar]; 

другого варианта быть просто и не может.

  Ответить  
 
 автор: Гамлет   (18.10.2008 в 01:40)   личное сообщение
 
 

Сори перепутал
вопрос должен быть такой

Ну почему же тогда в форме Orders2 видны все значения, а в Orders видны толко те которые соответствуют фильтрующему списку Group

  Ответить  
 
 автор: Lukas   (18.10.2008 в 01:59)   личное сообщение
 
 

В форме "Orders 2" в комбобоксе Combo7 я вижу числовое значение - значение поля [TOVARID] запроса-источника данных формы.
То есть, значение поля [TOVARID] источника данных формы, не входит в состав возвращаемых значений запроса-источника данных комбобокса Combo7, если выбрана другая группа.

  Ответить  
 
 автор: Lukas   (18.10.2008 в 02:18)   личное сообщение
 
 

Немного непонятно получилось. Попробую еще раз.
Комбобокс Combo7 связан с полем [TOVARID]. Когда мы устанавливаем ширину первого столбца больше 0 и Присоединенный столбец-1., комбобокс отображает нам значение связанного поля.
Когда мы Устанавливаем ширину первого столбца в 0, комбобокс отображает значение следующего столбца с шириной, большей 0. Значение следующего столбца мы получаем из запроса-источника данных строк комбобокса. Если значение связанного поля входит в состав источника данных строк комбобокса-мы его видим, если не входит-не видим.

  Ответить  
 
 автор: Lukas   (18.10.2008 в 02:24)   личное сообщение
 
 

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

  Ответить  
 
 автор: Гамлет   (18.10.2008 в 02:21)   личное сообщение
 
 

Это писалось для предыдущего сообщения. С последними 2-мя щас попробую разобраться

Давай еще раз
В форме "Orders 2" в комбобоксе Combo7 числовое значение не исчезает визуально, при выборе другой группы товара списке Group
а
В форме "Orders" в комбобоксе Combo7 название товара исчезает визуально, при выборе другой группы товара списке Group

Вопрос
Почему это происходит и можно ли это как то обойти. Надо чтобы в форме "Orders" в комбобоксе Combo7 название товара не исчезало визуально, при выборе другой группы товара в списке Group (в главном), а надо чтобы просто фильтровался комбобокс Combo7
Это как раз и происходит в форме "Orders 2"

Различие списков Combo7 только в том, что в одном ширина первого столбца равна 0, а в другом нет

  Ответить  
 
 автор: Lukas   (18.10.2008 в 02:28)   личное сообщение
 
 

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

  Ответить  
 
 автор: Гамлет   (18.10.2008 в 16:51)   личное сообщение
19 Кб.
 
 

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

Возможно зто так и есть. А как это обойти и можно ли это обойти ?
Я пробывал поиграть св-вами: BoundColumn 2, при этом устанавливая ColumnWith 3cm; 0cm, но ничего не выходит.
Может надо еще какие-то св-ва поменять

Одно решение у меня есть (см.аттач.). На Group_AfterUpdate() подсовывать новый RowSource для Combo7, но это мне не очень нравится. Вот я и пытаюсь найти что-то более элегантное.

2. Если не получиться, тогда можно будет говорить про это
И вообще, в твоем случае нужно пользоваться справочной формой полюбому

  Ответить  
 
 автор: Lukas   (18.10.2008 в 17:18)   личное сообщение
 
 

Я в эту игру играл лет пять назад. Через голову прыгнуть не получилось.
Полистай sql.ru. Там эта тема постоянно возникает. Других решений, чем справочная форма, я там не нешел.
Не трать время понапрасну:
В этом случае нужно пользоваться справочной формой полюбому
Не успеешь оглянуться, как справочник товаров разрастется до такого состояния, что в нем трудно будет что-нибудь найти. Организуй быстрый поиск в справочнике. (может даже без фильтра по группе товара).
Если не веришь мне, найди у кого-нибудь установленную 1С склад (бухгалтерию, торговлю, предприятие и т.д.) и посмотри как там реализовано. А ведь люди на этом уже не одну "собаку съели".

  Ответить  
 
 автор: Гамлет   (18.10.2008 в 17:27)   личное сообщение
 
 

Я в эту игру играл лет пять назад. Через голову прыгнуть не получилось
А ведь хочется. Отважные герои всегда идут в обход...
Отсутствие результата - тоже результат. Еще раз спасибо

По теме
Для тех кто сталкивался с подобной задачей прошу подтвердить или опровергнуть утверждения уважаемого Lukas- a

  Ответить  
 
 автор: Lukas   (18.10.2008 в 17:48)   личное сообщение
46 Кб.
 
 

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

  Ответить  
 
 автор: Lukas   (20.10.2008 в 22:18)   личное сообщение
 
 

Что-то вариантов не добавилось.

  Ответить  
 
 автор: Гамлет   (20.10.2008 в 23:24)   личное сообщение
 
 

Люди прокоментируете предложенное выше решение. ПЛИЗ
Обязательно ли нужно использовать (создавать) справочную форму для ввода значений
или
Возможно настроить Combo7 (чтобы не пропадали названия в форме "Orders") при изменении значения в фильтрующем списке Group

зы
мне пока достаточно просто фильтрующего списка Group (данных не слишком много)

  Ответить  
 
 автор: Lukas   (21.10.2008 в 00:16)   личное сообщение
13 Кб.
 
 

Есть такой вариант, код открытый

  Ответить  
 
 автор: Гамлет   (21.10.2008 в 00:46)   личное сообщение
20 Кб.
 
 

Спасибо Lukas
Скромненько и со вкусом (проще не придумаешь). Кажись все дееспособно.
Слегка подформатировал и вот что получилось см.аттач.
Вот только список вываливается как то не привычно.
Не будет ли это смущать юзеров ?
Пожалуй это единственный недостаток

Если есть другие предложения или коментарии, интересно было бы их посмотреть

  Ответить  
 
 автор: Lukas   (21.10.2008 в 01:03)   личное сообщение
 
 

А я бы спрятал кнопочку от закрытого комбобокса накладкой, а кнопочку от открытого комбобокса оставил слева. Тоже непривычно, но по-другому.

  Ответить  
 
 автор: час   (21.10.2008 в 08:29)   личное сообщение
 
 

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

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList