Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменить порядок сортировки с таблице Парадокс, как это сделать... 
V
    Опции темы
BigMazy
Дата 8.10.2007, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

Возникла такая проблема:

Создал таблицу в парадоксе. Структура таблицы такая:
  id - целочисленный идентификатор (пер. ключ)
  value - строковое значение

Создал индекс по полю value с именен index_value

Однако, сортировка выполняется только по возрастанию т.е. от A до Z.
По убыванию (от Z до А) НЕ сортирует!

Смену сортировки делал следующим образом:
  Table_ruler.IndexDefs[1].Options:=Table_ruler.IndexDefs[1].Options+[ixDescending];
   или в зависимости от сортировки
  Table_ruler.IndexDefs[1].Options:=Table_ruler.IndexDefs[1].Options+[ixDescending]; 

  Table_ruler.IndexName:='index_value';  

Как сменить порядок сортировки с "по возрастанию" на "по убыванию"? 

PS:  Как я понял из чтения форумов - свойство IndexDefs применяется только при создании таблицы, но не при вызове из других процедур.... так ли?







Это сообщение отредактировал(а) BigMazy - 8.10.2007, 19:37
PM MAIL   Вверх
ALeXandrK
Дата 8.10.2007, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Загляни в хелп, там наверняка пример есть.

Это сообщение отредактировал(а) ALeXandrK - 8.10.2007, 19:10


--------------------
Богат не/ни тот, у кого много, а тот, кому хватает
PM WWW   Вверх
Esperito
Дата 8.10.2007, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вообще-то, ты должен делать два индекса - по одному для каждого направления.
PM MAIL   Вверх
BigMazy
Дата 8.10.2007, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Да, конечно, сдедать два индекса по каждому напралению - это самое прямое решение, но ведь это очень не рационально с точки зрения ресурсов, если база данных достаточно масштабная и имеет много полей по которым необходимо делать соритровку

Да и к тому же, раз индекс в одном напрвлении  уже существует, то он годится и для использования в другом напрвлении.    

Наверняка есть программное решение вопроса. Да и к тому же, ведь есть значение свойства поля IndexDefs как ixDescending, которое должно программно задавать направление сортировки

А хелп я читал.... не  работает...
Вот полный код - как по хелпу. 

 Table_ruler.IndexName:='index_value';

 Table_ruler.Active := False;
 Table_ruler.Exclusive := True;

 Table_ruler.IndexDefs.Update;
  Table_ruler.IndexDefs[1].Options:= Table_ruler.IndexDefs[1].Options+[ixDescending];
  Table_ruler.Exclusive := False;
 Table_ruler.Active := True;

Фигня  какая-то с этой сортировкой! 




Это сообщение отредактировал(а) BigMazy - 8.10.2007, 21:43
PM MAIL   Вверх
BigMazy
Дата 8.10.2007, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Очень интерсно!!! Нашел статью о механизме BDE и там доказываеся что через BDE и tTable обратную сортировку вообще не возможно сделать!!! Вот адрес статьи ___http://www.ibase.ru/devinfo/bde.htm 
А вот цитата из неё

"... Вернемся к запросу, которым TTable открыл таблицу. В конце запроса стоит указание порядка сортирвки - ORDER BY FIELD ASC. По умолчанию TTable сортирует данные в порядке поля первичного ключа. И кстати, если пользоваться свойством TTable.IndexName, то все равно к запросу будет добавляться ORDER BY INDEXFIELD ASC. Таким образом получается, что свойство IndexName при работе с SQL-серверами бессмыслено. Вместо него нужно просто использовать свойство IndexFieldNames. Даже если в этом свойстве указать поле, по которому нет индекса, то все равно BDE "прицепит" к запросу ORDER BY FIELD ASC. Кстати, BDE абсолютно игнорирует направление индекса, и всегда в запросе добавляет ASC, даже если индекс по этому полю создан как DESCENDING (по убыванию). Получается, что отсортировать таблицу в TTable по убыванию нельзя...."

Неужели всё так печально?
PM MAIL   Вверх
Esperito
Дата 9.10.2007, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ты должен сделать индекс для обратной сортировки.
Цитата

Да и к тому же, раз индекс в одном напрвлении  уже существует, то он годится и для использования в другом напрвлении.    

Нет, не годится.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.1528 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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