1 (edited by memult 2017-04-04 08:00:48)

Topic: Сортировка по нескольким полям таблицы

Добрый день, столкнулся с проблемой.
Имеются несколько полей в таблице,среди них поля:
1. Срок [поле1] (дата)
2. Приоритет [поле 2] (выскокий, низкий)
3. Процент выполнения [поле3]. (0-100%)
Подскажите, как сделать так, чтобы вверху таблицы отображались записи с высоким приоритетом, наименьшим сроком и с %<100.

Re: Сортировка по нескольким полям таблицы

Здравствуйте.


В настройках кнопки "Поиск" и в настройках компонента TableGrid имеется пункт "Сортировать", выберите там значение ORDER BY, далее в тектовом поле справа вы можете ввести поля через запятую, по которым необходимо сортировать данные, т.е.

Поле2 ASC, Поле1 ASC, Поле3 DESC

только не совсем понял, какой тип поля имеет второе поле.

Dmitry.

Re: Сортировка по нескольким полям таблицы

второе поле и третье поле - это тестовые поля, словари,как связанная таблица. Значения задаются через Combobox.

Re: Сортировка по нескольким полям таблицы

memult wrote:

второе поле и третье поле - это тестовые поля, словари,как связанная таблица. Значения задаются через Combobox.

для сортировки можно указать и внешние ключи, просто укажите их там

Dmitry.

Re: Сортировка по нескольким полям таблицы

Спасибо.
С сортировкой первых двух пунктов все нормально. Подскажите, как сделать, чтобы строки, где процент =100%, отображались внизу таблицы. Независимо от сортировки.?

Re: Сортировка по нескольким полям таблицы

memult wrote:

Спасибо.
С сортировкой первых двух пунктов все нормально. Подскажите, как сделать, чтобы строки, где процент =100%, отображались внизу таблицы. Независимо от сортировки.?

Думаю это можно реализовать только с помощью SQL запроса, в котором будут два SQL запроса с объединением UNION ALL



SELECT Поле1, Поле2, Поле3
FROM 
  (
  SELECT Поле1, Поле2, Поле3
  FROM TableName
  WHERE Поле3<>100
  ORDER BY Поле2 ASC, Поле1 ASC, Поле3 DESC
  )

UNION ALL

SELECT Поле1, Поле2, Поле3
FROM  TableName
WHERE Поле3=100
Dmitry.

7 (edited by memult 2017-04-11 17:17:48)

Re: Сортировка по нескольким полям таблицы

Думаю это можно реализовать только с помощью SQL запроса, в котором будут два SQL запроса с объединением UNION ALL


SELECT Поле1, Поле2, Поле3
FROM
  (
  SELECT Поле1, Поле2, Поле3
  FROM TableName
  WHERE Поле3<>100
  ORDER BY Поле2 ASC, Поле1 ASC, Поле3 DESC
  )

UNION ALL

SELECT Поле1, Поле2, Поле3
FROM  TableName
WHERE Поле3=100

Это крайне проблематично, т.к сейчас результат формируется кнопкой поиск, с множеством таблиц-словарей и в целом большой таблицей.
Повторюсь, поле по которому нужно отфильтровать результат,это словарь с процентами (от 0% до 100%).
Можно ли как то просто добавить фильтр чтобы скрывать/отображать в результате записи,со заначением процента=100% ? К примеру через чекбокс?
Сейчас у меня есть фильтр со значениями в мультикомбобоксе по данному полю, но это очень неудобно выделять там все числа, кроме 100%.

Re: Сортировка по нескольким полям таблицы

Можно. Создайте вычисляемое поле вида
(CASE WHEN Поле3=100 THEN 0 ELSE 1 END)


Также на форме разместите CheckBox с заголовком "Скрывать/Показать 100%" и присвойте данному компоненту созданное выч. поля с помощью свойств TableName и FieldName, не забудьте добавить данный компонент в настройку кнопки Поиск.


Также включите у данного CheckBox свойство AllowGrayed=True, чтобы была возможность игнорировать компонент при поиске.

Dmitry.