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


Фильтр по сравнению двух полей

фильтр условия поля

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

#1 bottrop

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

  • Пользователи
  • PipPipPip
  • 153 сообщений
  • Пол:Мужчина
  • Город:Армавир

Отправлено 21 Февраль 2016 - 18:47

Доброго дня.
Вопрос такой: Как сделать фильтр по сравнению двух полей одной таблицы? Например, таблица Задачи, в ней поля Дата задачи, Дата выполнения и Выполнено. Нужно отфильтровать задачи по просрочености выполнения.
Т.е. я создаю фильтр "Просроченные задачи" и там выбираю условия выполнено-Да, дата задачи < Даты выполнения. Как прописать такое условия в фильтре?

Такой же вопрос к Форматированию и Напоминаниям.
Заранее спасибо за подсказку.

#2 CbCoder

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

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

Отправлено 22 Февраль 2016 - 13:55

Переходите в режим эксперта (в конструкторе условий поля не сравнить) и редактируете условие вручную.

#3 bottrop

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

  • Пользователи
  • PipPipPip
  • 153 сообщений
  • Пол:Мужчина
  • Город:Армавир

Отправлено 22 Февраль 2016 - 14:51

Я и так в конструкторе ковыряюсь, это понятно. Как сравнить????

#4 CbCoder

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

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

Отправлено 22 Февраль 2016 - 15:06

Вы невнимательно прочитали что ли? Я же написал - "в режиме конструктора невозможно задать сравнение полей, перейдите в режиме эксперта". А там все очевидно.

#5 bottrop

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

  • Пользователи
  • PipPipPip
  • 153 сообщений
  • Пол:Мужчина
  • Город:Армавир

Отправлено 22 Февраль 2016 - 18:47

Ссори, я не верно написал ответ. Я и так в режиме эксперта ковыряюсь, не могу понять как задается сравнение полей. В режиме конструктора по умолчанию понятно, что акое не сделаешь. Помогите примером, как сравнить два поля?

Сообщение отредактировал bottrop: 22 Февраль 2016 - 18:47


#6 AntonKravchenko

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

  • Пользователи
  • PipPipPip
  • 152 сообщений
  • Пол:Мужчина
  • Город:Нижний Новгород

Отправлено 22 Февраль 2016 - 18:58

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

#7 bottrop

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

  • Пользователи
  • PipPipPip
  • 153 сообщений
  • Пол:Мужчина
  • Город:Армавир

Отправлено 22 Февраль 2016 - 19:42

Просмотр сообщенияAntonKravchenko (22 Февраль 2016 - 18:58) писал:

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

Спасибо, тоже вариант. Не хочеться делать лишние поля, думаю есть прямой способ сравнения?! Надеюсь CbCoder поможет, а не формально отпишется.

#8 CbCoder

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

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

Отправлено 23 Февраль 2016 - 20:07

Цитата

Я и так в режиме эксперта ковыряюсь, не могу понять как задается сравнение полей

Я просто не пойму, в чем именно у вас там сложность возникает, т.к. там все тривиально для данного случая. Если вы принципиально не знаете как в режиме эксперта условия писать, составляете в конструкторе близкий вариант (например в вашем случае вместо поля выбираете произвольную дату), затем просто переключаетесь в режим эксперта и заменяете дату на поле. Как записать поле - вы увидите сами своими глазами. Если все равно что-то будет непонятно, выложите тут что у вас получилось и я скажу что именно не так. Поверьте, мне не сложно написать за вас условие, но моя задача скорее научить вас пользоваться программой самостоятельно.

#9 bottrop

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

  • Пользователи
  • PipPipPip
  • 153 сообщений
  • Пол:Мужчина
  • Город:Армавир

Отправлено 21 Март 2016 - 20:53

Сложность в том, что у меня две даты и я не могу сделать следующее действие:

поле "Дата" по условию должна быть меньше поля "Добавлена"+3 дня. Т.е. поле "дата" не может быть назначено на срок более 3 дней от даты добавления записи.

Как такое выражение сделать при форматировании?

Форматирование:
$cur_line['Статус клиента']['db_value']=='Перенос' and (substr($cur_line['Дата']['db_value'],0,10)<strtotime($cur_line['Добавлена']['db_value'])

Как прибавить три дня?

Сообщение отредактировал bottrop: 21 Март 2016 - 21:03


#10 CbCoder

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

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

Отправлено 22 Март 2016 - 10:50

https://clientbase.r...?showtopic=5766

#11 bottrop

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

  • Пользователи
  • PipPipPip
  • 153 сообщений
  • Пол:Мужчина
  • Город:Армавир

Отправлено 22 Март 2016 - 12:44

Делаю так:

$cur_line['Статус клиента']['db_value']=='Перенос' and strtotime($cur_line['Дата']['db_value'])<date($cur_line['Добавлена']['db_value'], mktime(date('H'), date('i'), date('s'), date('m'), date('d')+3, date('Y')))

Не выделяет то, что нужно. Подскажите что не так?!

#12 CbCoder

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

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

Отправлено 22 Март 2016 - 12:46

У вас несколько логических ошибок в коде. Почитайте для начала описание функций: strtotime date mktime

#13 bottrop

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

  • Пользователи
  • PipPipPip
  • 153 сообщений
  • Пол:Мужчина
  • Город:Армавир

Отправлено 22 Март 2016 - 14:53

Прочитал, но это нисколько не приблизило меня к решению проблемы(((

Может кто-то может помочь в решении проблемы?!





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

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