Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];

Вниз

Вопрос по сортировке данных в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.036 c
1-1100611573
Jk
2004-11-16 16:26
2004.11.28
Кодеры, хелп со строками!


1-1100436459
Polycom
2004-11-14 15:47
2004.11.28
Код ASCII


8-1093550869
ThomasXIII
2004-08-27 00:07
2004.11.28
Цвета...


14-1100366571
MeF88
2004-11-13 20:22
2004.11.28
VCL или Win API


1-1100177535
andrey__
2004-11-11 15:52
2004.11.28
TServiceApplication - Pause, Continue, Stop





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский