Перейти к содержимому


Фильтр по множественному полю


Сообщений в теме: 4

#1 mak

    Активный участник

  • Активный пользователь
  • PipPipPip
  • 207 сообщений

Отправлено 14 Март 2011 - 22:48

Есть таблица проект, в которой содержатся название проектов и множественное поле типа пользователь, где выбираются пользователи, работающие с данным проектом. Один пользователь может работать с несколькими проектами.

Есть еще одна таблица, в которой содержатся товары, у каждого товара есть поле проект.

Как отфильтровать товары таким образом, чтобы менеджер видел только товары, которые принадлежат к проектам, в которых он участвует?

#2 mak

    Активный участник

  • Активный пользователь
  • PipPipPip
  • 207 сообщений

Отправлено 15 Март 2011 - 00:03

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

теперь возникли сложности со счетом.

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

2. как получить цену выбранного товара? только сложным sql запросом? тогда как в этом запросе (выполняемом в подтаблице) получить название проекта из основной таблицы?

#3 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 15 Март 2011 - 09:39

Просмотр сообщенияmak (15.3.2011, 0:03) писал:

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

Просмотр сообщенияmak (15.3.2011, 0:03) писал:

1. в подтаблице "позиции счета" есть поле "наименование" со связью к "таблице товаров".
Как вывести только те товары, которые принадлежат проекту, указанному в счете? т.е. сделать фильтр товаров в подтаблице по значению выбранному в основной таблице.
На данный момент для новой добавляемой записи это красиво реализовать нельзя, только если добавить поле Проект в саму позицию, и затем в поле Товар настроить фильтр по нему. Но т.к. у Вас уже есть поле проекта в самом счете, то думаю Вас это врядли устроит.

Просмотр сообщенияmak (15.3.2011, 0:03) писал:

2. как получить цену выбранного товара? только сложным sql запросом? тогда как в этом запросе (выполняемом в подтаблице) получить название проекта из основной таблицы?
Почему сложным, и зачем для вывода цены название проекта? Получить цену выбранного товара из той же таблицы достаточно легко. См. примеры в документации.

#4 mak

    Активный участник

  • Активный пользователь
  • PipPipPip
  • 207 сообщений

Отправлено 15 Март 2011 - 15:03

Цитата

Вас уже есть поле проекта в самом счете, то думаю Вас это врядли устроит.
Да, действительно, указывать название проекта в каждой позиции не удобно. Удобнее один раз в счете.
А если в позициях сделать вычисляемое поле "проект" в которое записывать значение из счета и фильтровать по этому полю - будет работать во время создания счета? Я так понимаю, перед добавлением позиции счета сам счет сохраняется, значит можно обратиться к записи. Идли я ошибаюсь?

Цитата

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

Кстати, можно для поля со списком (выпадающее меню) использовать запрос SQL?

#5 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 15 Март 2011 - 15:16

Просмотр сообщенияmak (15.3.2011, 15:03) писал:

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

Просмотр сообщенияmak (15.3.2011, 15:03) писал:

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

Просмотр сообщенияmak (15.3.2011, 15:03) писал:

Кстати, можно для поля со списком (выпадающее меню) использовать запрос SQL?
Нет, только таблицу.





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных