Форум: "Базы";
Текущий архив: 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