Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Базы данных и репортинг > ADOQuery использование ф-и Rank |
Автор: Vaskevych 14.2.2011, 23:26 | ||
Всем привет, подскажыте как можно использовать ф-ю rank в запросе к базе даных Access или ето нереально !!! Большое Списабо !!! Примерный запрос:
|
Автор: Данкинг 14.2.2011, 23:54 |
А что за функция такая? |
Автор: Vaskevych 15.2.2011, 09:38 |
Ф-я которая отвечает за установку места относительно параметра, аналог РАНГ (RANK) в Excel. |
Автор: Vas 15.2.2011, 09:50 |
Это же агрегатная функция, сомневаюсь что акцесс такое поддерживает. Vaskevych, у Тома Кайта подсмотрел? |
Автор: Vaskevych 15.2.2011, 10:19 |
Ладно, если нет ф-ї буду писать сам, помогите !!! Значит есть значения например: зн. Ранг 3 2 7 4 7 4 2 1 6 3 Как я понимаю, сначала ищем минимальное значение (ето отправная точка). min = 2, rank =1 Потом, ищем следующее min+1 если есть rank = 2 если нет ищем следующее. как ето реализовать в Delphi покоректнее. |
Автор: Vaskevych 15.2.2011, 20:26 |
Значит пишу свою ф-ю есть прогресс (потом выложу всем) только один вопрос можно ли в SQL запросе загнать значения какогото поля в массив. ????? |
Автор: Vaskevych 17.2.2011, 21:19 | ||||||||||||
Значит так как обещал, помогаю таким как я сам: ![]() вот результат. ![]() 1. Задаем поля Calculated для возможности вывода подсчетов. 2. В обаботчике CalcFields потомка ADOQuery (например) пишем код:
Что делает етот код ??? Он загоняет значения одного столбика в список с уникальным идентификатором (для возможности редактирования). RecP: TRecord Мой виртуальний список основан на TList (С понятных причин его не выбрасываю напишете сами):
3. В обработчике AfterOpen пишем код ado2tb.Clear; - очищаем список от значений. 4. В обработчике AfterPost пишем код
Изменяем значение которое редактировалось. 4. Сверху пишем
5. Сортируем масив методом пузырька (или другим)
6. И вот сама функция которая отвечает за установку ранга
7. Все ... ![]() |
Автор: Vaskevych 18.2.2011, 21:41 | ||
Добавлю что для пересчета поля CalcFields используйте ф-ю ниже но предварительно проверте открыт ли компонент.
|