Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.28;
Скачать: CL | DM;

Вниз

Вопрос по сортировке данных в TDBGrid e.   Найти похожие ветки 

 
Vigo   (2004-10-12 21:28) [0]

Имеется текстовый файл с данными, с которым программа работает через TClientDataSet. Эти данные отображаются в TDBGrid"e. Есть необходимость сортировать эти данные по разным полям, а также стоит задача реализовать работу с данными без использования BDE, в связи с чем для решения задачи сортировки данных невозможно использование Order By.
Поэтому сортировка данных реализована следующим образом. Под TDBGrid"ой лежит TRadioGroup, с помощью которой пользователь выбирает поля, по которым сортируются данные:
begin
  if RadioGroup.ItemIndex=0 then StaffDb.IndexFieldNames:="ID"
  else if RadioGroup.ItemIndex=1 then
   StaffDb.IndexFieldNames:="Family";
  else if RadioGroup.ItemIndex=2 then
    StaffDb.IndexFieldNames:="CardType"
  else if RadioGroup.ItemIndex=3 then
     StaffDb.IndexFieldNames:="Otdel";
end;
Когда сортировка происходит по полю содержащему числовые значения, то все нормально. А по символьному полю сортируется неправильно (не по алфавиту).
Как сделать так, чтобы символьное поле сортировалось по алфавиту?


 
sniknik ©   (2004-10-13 00:07) [1]

with StaffDb do
 case RadioGroup.ItemIndex of
    0: IndexFieldNames:="ID";
    1: IndexFieldNames:="Family";
    2: IndexFieldNames:="CardType";
    3: IndexFieldNames:="Otdel";
 end;

лучше выглядит ;о), а вот с индексом проблемы, небось руские данные  ортируются? а ленгдрайвера то и нет... кто ему руский язык обьяснять будет? ;о)
теоретически конечно, специально пробовать не стал. нет у него (вроде бы) локализации. вот он и сортирует буквы как бинарные данные.
обойти можно наверное, ну придумать там доп. поле куда значения для индекса писать в нужном порядке... или чтото другое. но проше по моему заменить его на ADODataSet, у него с локализацией все в порядке не раз проверено, руские сортирует правильно.

а вообще подожди, тут народ есть кто и на клиентских датасетах собаку сьел ;о)) может придумают что.


 
sniknik ©   (2004-10-13 00:32) [2]

странно, проверил, все правильно сортирует и с рускими буквами тоже. чето ты там не все говориш.
у меня даже от Transliterate (по идее должно) у поля сортировка не зависит (те несколько что забил для примера правильно засортировались)

признавайся, ничего с кодировками не делал? отображение фонтами в гриде не настраивал? и т.д.


 
vigo   (2004-10-13 10:49) [3]

Настраивал. Все установил DBGrid1.Font.Charset:="Russian_CharSet" и DBGrid1.Font.Name:="Times New Roman". Тоже самое с DBGrid1.TitleFont.
Попробую изменить на что-нить другое...


 
sniknik ©   (2004-10-13 11:06) [4]

вот в этом и ошибка, наверное, ставь Charset по дефаулту (по идее на русской винде это и есть русский но может есть какие различия именно в методах сортировки х.з.).

и у меня кстати дельфя седьмая... тоже может быть, разница... могу тестик какой нибудь скомпилить для проверки, будет на твоей машине отличатся?


 
vigo   (2004-10-13 11:45) [5]

Ура... Заработало! (Вот уж не думал, что в этом дело; по дефолту сортирует нормально, а установка рашн чарсет нет...)


 
vigo   (2004-10-28 17:22) [6]

Здравствуйте, думал помогло и забыл. Теперь завел фамилию - на букву "ч". Фамилия оказалась перед "А" и пошло поехало. Изменение DBGrid.Font.Charset не помогает. Сортирую вроде бы также (только по нажатию на название поля DBGrid"a (DBGridTitleClick):
ClientDataSet.IndexFieldNames:= Column.Field.FieldName;



Страницы: 1 вся ветка

Текущий архив: 2004.11.28;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
14-1099870319
Andy BitOff
2004-11-08 02:31
2004.11.28
Секретная страница форума.


1-1100164056
freeman82
2004-11-11 12:07
2004.11.28
объекты и память


8-1093530110
Dimman
2004-08-26 18:21
2004.11.28
ScreenShot в файл средствами Win API


14-1100292850
Knight
2004-11-12 23:54
2004.11.28
А где это - Рыбинск?


1-1100245406
Frozzen
2004-11-12 10:43
2004.11.28
Как правельно объявить массив цветов?