Форум: "Базы";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];
ВнизСпособы сортировки или как отсортировать украинские символы? Найти похожие ветки
← →
zorik © (2006-07-20 14:08) [0]Как указать способ сортировки украинских символов? Как, я понял нужно создавать свой COLLATION ORDERS. По ссылкам из книги "Мир InterBase" ничего путного не нашел.
← →
Desdechado © (2006-07-20 15:39) [1]Врать не буду, поэтому только направлю на ibase.ru
Вроде, в FB1.5 уже есть украинский COLLATE
← →
Виталий Панасенко (2006-07-20 15:51) [2]Есть у меня
program ToWin1251;
// Программа, внедряет в табливы сортровки, и перевода в верхний, и
// нижний регистры, Interbase 5.0 - 6.0 поддержку украинского языка.
//
// Для работы программы скопируйте ее в один дирректорий с файлом
// gdsintl.dll и запустите.
//
// После чего работайте как и раньше с collate pxw_cyrl.win1251.
//
// create database "test.gdb" default character set win1251; - создание.
// select upper(fam collate pxw_cyrl) from s_empl; - выборка с upper.
// select * from s_empl order by fam collate pxw_cyrl; - выборка с сортировкой.
// И т.д.
//
// (с) STAR LEADER 01.04.2000.
// Гаврильев Сергей.
// press@cruizer.poltava.ua
//
// P.S. И не надейтесь, это не первоапрельская шутка, просто день хороший :).
← →
zorik © (2006-07-20 16:33) [3]
> Виталий Панасенко (20.07.06 15:51) [2]
сортировка всеравно неправильная, "і" "а", "б", ...
← →
Lexer © (2006-07-20 16:36) [4]Из документации FB:
На правильную сортировку национальных символов, как правило, влияет два параметра - набор символов (CHARSET) и порядок сортировки (COLLATION). И даже при правильно выставленных этих параметрах на уровне БД и запросов, вы можете обнаружить, что TpFIBDataSet сортирует их неправильно. Дело в том, что при локальной сортировке по
умолчанию используется простой метод сортировки без сравнения национальных кодировок.
Так, как если бы был указан неопределенный набор символов (NONE).
В компоненте TpFIBDataSet существует возможность сортировки в соответствии с
национальной кодировкой. Установить альтернативный метод сравнения строковых полей
можно при помощи свойства OnCompareFieldValues. Существуют три готовых метода для
Ansi- сортировки:
protected function CompareFieldValues(Field:TField;const S1,S2:variant):integer;
virtual;
public function AnsiCompareString(Field:TField;const val1, val2: variant):
Integer;
public function StdAnsiCompareString(Field:TField;const S1, S2: variant):
Integer;
AnsiCompareString будет учитывать регистр символов, а StdAnsiCompareString будет,
наоборот, игнорировать регистр.
pFIBDataSet1.OnCompareFieldValues := pFIBDataSet1.AnsiCompareString;
pFIBDataSet1.OnCompareFieldValues := pFIBDataSet1.StdAnsiCompareString;
По умолчанию для CompareFieldValues вы можете установить один из стандартных
методов, либо написать свой, если ни один из готовых вам не подходит.
← →
zorik © (2006-07-20 17:24) [5]
> Lexer © (20.07.06 16:36) [4]
сортировка не локальная
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.044 c