![]() |
|
|
![]()
|
|
| Fomaa |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 27.6.2007 Репутация: нет Всего: нет |
Подскажите, как отсортировать записи в TIBDataSet, не перегружая TIBDataSet ?
|
|||
|
||||
| pseud |
|
|||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 16 Всего: 40 |
если у тебя подключен к датасету грид, типа DevExpressTreeList или VirtualTreeView - то они умеют это делать. -------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
|||
|
||||
| Fomaa |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 27.6.2007 Репутация: нет Всего: нет |
я использую DBGridEh, но на сколько я знаю он не может сортировать.
можно ли самому вручную поменять позиции в TIBDataSet? |
|||
|
||||
| pseud |
|
|||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 16 Всего: 40 |
разве сложно просто поискать по форуму слово DBGridEh напрмер вот один из результатов поиска: Сортировка по клику на колонке, в EhLib -------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
pseud, а почему именно
Добавлено через 49 секунд
вроде есть же справка в поставке с компонентами Добавлено через 1 минуту и 28 секунд http://forum.vingrad.ru/index.php?showtopi...st&p=492000 |
|||
|
||||
| pseud |
|
|||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 16 Всего: 40 |
DevExpressTreeList - потому что я им пользуюсь VirtualTreeView - потому что его рекомендует каждый второй форумчанин Akella, ты считаешь что совет плох? -------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 3 Всего: 133 |
А можно немножко поофтопить и узнать от чего такая неприязнь к ORDER BY?
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| pseud |
|
||||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 16 Всего: 40 |
1. например датасет приходит из хранимой процедуры, которая кроме выборки еше до того много всяких операций выполнянет. 2. не знаю как в Interbase, но в Oracle есть такая особенность с вычисляемыми колонками: - в ORDER BY надо заносить не алиас отобранной колокни, а полный текст вычисления
- тогда как при клике по колонке в гриде - мы получим алиас [FieldName = 'field12'] и если мы его запихаем в ORDER BY - то получим ORACLE ERROR . -------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
||||
|
|||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
pseud, ну можно сказать, что не совсем правильный. Без обид. Это личное мое единичное мнение. Просто я не понял, зачем деревья использовать для просмотра табличных данных?
Добавлено через 1 минуту и 51 секунду думаю, что можно и по номеру
например Добавлено через 2 минуты и 34 секунды Poseidon, просто человек не хочет перегружать датасет, наверное |
|||
|
||||
| pseud |
|
|||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 16 Всего: 40 |
про три лист я образно - совсем не обязательно. я мог написать и DeveloperExpressDBGrid - но он все равно наследник того же DeveloperExpressTreeList. +1 но - в гриде выведены обычно не все колонки, возвращаемые из датасета - юзер (если есть возможность) любит попереставлять колонки местами. жаль, что, как часто бывает, обсуждение вопроса проходит без виновника. -------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
|||
|
||||
| Fomaa |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 27.6.2007 Репутация: нет Всего: нет |
У меня хранимая процедура в FireBird подсчитывает суммы по итогам года, выполняется она 2 минуты, а результат - 12 строк (по месяцам).
Если использовать ORDER BY, то при каждом нажатии на колонку будет сортировка работать 2 минуты - это очень долго, т.к. всего 12 записей. Как можно вручную поменять местоми записи в TIBDataSet? |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
да, здесь 12 записей быстрее отсортировать на клиенте
Добавлено через 2 минуты и 18 секунд Можно создать какую-то кеш таблицу, и результаты процедуры вносить в неё, а пользователю показать только кнопку "Пересчитать". Тогда эту таблицу можно заполнять очень редко, только по надобности. И сортировать можно запросом. Пользователь закрыл программы, открыл опять, полез в результаты, а они открыли не за 2 минуты, а за 0,2 секунды, разве он не будет доволен? |
|||
|
||||
| remax |
|
|||
|
Доцент ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 686 Регистрация: 7.4.2002 Где: Украина, Харьков Репутация: нет Всего: 5 |
как сказал Akella,
1) Вариант 1 - на клиенте. Причем, необязательно ручками. Насколько мне не изменяет память,TIB_Grid из пакета IBO4 ("Interbase Objects v4") меняет сортировку по столбцам прямо на клиенте. Т.е., после запроса получили табличку на клиента и тыкая в шапки столбцов меняем сортировку без повторных запросов. Наверняка есть и другие библиотеки с такой функциональностью, но с ходу не вспомню. 2) Вариант 2 - на сервере. Если так долго считает, то надо подумать - не изменить ли идеологию. Не будем вдаваться в тонкости построения баз данных и их оптимизации. Примем за данное, что автор темы все сделал правильно. Но, кто мешает иметь вспомогательную таблицу для итогов как, например, в 1С? Т.Е. Расчет итогов - это одна процедура. А просмотр итогов - другая. (Собственно, это все - небольшая детализация того, что и так предложил Akella) Это сообщение отредактировал(а) remax - 20.8.2008, 03:21 -------------------- Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |