Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка DataSet без order 
:(
    Опции темы
Fomaa
Дата 13.8.2008, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 27.6.2007

Репутация: нет
Всего: нет



Подскажите, как отсортировать записи в TIBDataSet, не перегружая TIBDataSet ?
PM MAIL   Вверх
pseud
Дата 13.8.2008, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



Цитата(Fomaa @  13.8.2008,  16:51 Найти цитируемый пост)
Подскажите, как отсортировать записи в TIBDataSet, не перегружая TIBDataSet ?

если у тебя подключен к датасету грид, типа DevExpressTreeList или VirtualTreeView - то они умеют это делать.


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Fomaa
Дата 13.8.2008, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 27.6.2007

Репутация: нет
Всего: нет



я использую DBGridEh, но на сколько я знаю он не может сортировать.
можно ли самому вручную поменять позиции в TIBDataSet?
PM MAIL   Вверх
pseud
Дата 14.8.2008, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



 smile 
разве сложно просто поискать по форуму слово DBGridEh

напрмер вот один из результатов поиска:
Сортировка по клику на колонке, в EhLib


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Akella
Дата 15.8.2008, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



pseud, а почему именно

Цитата(pseud @  13.8.2008,  16:58 Найти цитируемый пост)
TreeList


Цитата(pseud @  13.8.2008,  16:58 Найти цитируемый пост)
TreeView


Добавлено через 49 секунд
Цитата(Fomaa @  13.8.2008,  17:00 Найти цитируемый пост)
я использую DBGridEh, но на сколько я знаю он не может сортировать.

вроде есть же справка в поставке с компонентами

Добавлено через 1 минуту и 28 секунд
http://forum.vingrad.ru/index.php?showtopi...st&p=492000
PM MAIL   Вверх
pseud
Дата 15.8.2008, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



Цитата(Akella @  15.8.2008,  12:15 Найти цитируемый пост)
pseud, а почему именно

DevExpressTreeList - потому что я им пользуюсь  smile 
VirtualTreeView - потому что его рекомендует каждый второй форумчанин  smile  (сам толком и не пользовался)


Akella, ты считаешь что совет плох?


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Poseidon
Дата 15.8.2008, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 3
Всего: 133



А можно немножко поофтопить и узнать от чего такая неприязнь к ORDER BY?


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
pseud
Дата 15.8.2008, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



Цитата(Poseidon @  15.8.2008,  13:41 Найти цитируемый пост)
А можно немножко поофтопить и узнать от чего такая неприязнь к ORDER BY?


1. например датасет приходит из хранимой процедуры, которая кроме выборки еше до того много всяких операций выполнянет.
2. не знаю как в Interbase, но в Oracle есть такая особенность с вычисляемыми колонками:
  - в ORDER BY надо заносить не алиас отобранной колокни, а полный текст вычисления
Код

SELECT
  field1 || field 2 as field12
FROM
  table1
ORDER BY
  field1 || field2

  - тогда как при клике по колонке в гриде - мы получим алиас [FieldName = 'field12'] 
и если мы его запихаем в ORDER BY - то получим ORACLE ERROR .


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Akella
Дата 18.8.2008, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



pseud, ну можно сказать, что не совсем правильный. Без обид. Это личное мое единичное мнение. Просто я не понял, зачем деревья использовать для просмотра табличных данных?

Добавлено через 1 минуту и 51 секунду
Цитата(pseud @  15.8.2008,  14:14 Найти цитируемый пост)
2. не знаю как в Interbase, но в Oracle есть такая особенность с вычисляемыми колонками:
  - в ORDER BY надо заносить не алиас отобранной колокни, а полный текст вычисления

думаю, что можно и по номеру
Код

order by 2

например

Добавлено через 2 минуты и 34 секунды
Poseidon, просто человек не хочет перегружать датасет, наверное
PM MAIL   Вверх
pseud
Дата 18.8.2008, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



Цитата(Akella @  18.8.2008,  00:12 Найти цитируемый пост)
pseud, ну можно сказать, что не совсем правильный. Без обид. Это личное мое единичное мнение. Просто я не понял, зачем деревья использовать для просмотра табличных данных?


про три лист я образно - совсем не обязательно. я мог написать и DeveloperExpressDBGrid - но он все равно наследник того же DeveloperExpressTreeList.


Цитата(Akella @  18.8.2008,  00:12 Найти цитируемый пост)
думаю, что можно и по номеру

+1
но
  - в гриде выведены обычно не все колонки, возвращаемые из датасета
  - юзер (если есть возможность) любит попереставлять колонки местами.


Цитата(Akella @  18.8.2008,  00:12 Найти цитируемый пост)
 просто человек не хочет перегружать датасет, наверное

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


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Fomaa
Дата 18.8.2008, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 27.6.2007

Репутация: нет
Всего: нет



У меня хранимая процедура в FireBird подсчитывает суммы по итогам года, выполняется она 2 минуты, а результат - 12 строк (по месяцам).
Если использовать ORDER BY, то при каждом нажатии на колонку будет сортировка работать 2 минуты - это очень долго, т.к. всего 12 записей. Как можно вручную поменять местоми записи в TIBDataSet?
PM MAIL   Вверх
Akella
Дата 18.8.2008, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



да, здесь 12 записей быстрее отсортировать на клиенте

Добавлено через 2 минуты и 18 секунд
Можно создать какую-то кеш таблицу, и результаты процедуры вносить в неё, а пользователю показать только кнопку "Пересчитать". Тогда эту таблицу можно заполнять очень редко, только по надобности. И сортировать можно запросом. Пользователь закрыл программы, открыл опять, полез в результаты, а они открыли не за 2 минуты, а за 0,2 секунды, разве он не будет доволен?
PM MAIL   Вверх
remax
  Дата 20.8.2008, 03:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент
**


Профиль
Группа: Участник Клуба
Сообщений: 686
Регистрация: 7.4.2002
Где: Украина, Харьков

Репутация: нет
Всего: 5



как сказал Akella, 
Цитата
 Можно создать какую-то кеш таблицу


1) Вариант 1 - на клиенте.
Причем, необязательно ручками. Насколько мне не изменяет память,TIB_Grid из пакета IBO4 ("Interbase Objects v4") меняет сортировку по столбцам прямо на клиенте. Т.е., после запроса получили табличку на клиента и тыкая в шапки столбцов меняем сортировку без повторных запросов. Наверняка есть и другие библиотеки с такой функциональностью, но с ходу не вспомню.

2) Вариант 2 - на сервере. Если так долго считает, то надо подумать - не изменить ли идеологию. Не будем вдаваться в тонкости построения баз данных и их оптимизации. Примем за данное, что автор темы все сделал правильно. Но, кто мешает иметь вспомогательную таблицу для итогов как, например, в 1С?  Т.Е. Расчет итогов - это одна процедура. А просмотр итогов - другая.

(Собственно, это все - небольшая детализация того, что и так предложил Akella)  smile  smile  smile 

Это сообщение отредактировал(а) remax - 20.8.2008, 03:21


--------------------
Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0548 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.