ZeosDbo+PostgreSQL проблема сортировки кириллицы в TZQuery

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
heks
новенький
Сообщения: 29
Зарегистрирован: 23.07.2012 11:50:39

ZeosDbo+PostgreSQL проблема сортировки кириллицы в TZQuery

Сообщение heks »

ZeosDbo 7.0.3-stable (7.2.0-alfa) PostgreSQL 9.1.9. Lazarus 1.0.8, (1.2.4.) win xp,7,8

Значения в исходной таблице: А,Б,В,Г,Д
Источник грида -

Код: Выделить всё

 select field_name from tbl
сортировка

Код: Выделить всё

with TZQuery(RxDBGrid1.DataSource.DataSet) do
begin
 SortedFields:='field_name';
 SortType:=stAscending;
end;
результат: Б,В,Г,Д,А

Код: Выделить всё

with TZQuery(RxDBGrid1.DataSource.DataSet) do
begin
 SortedFields:='field_name';
 SortType:=stDescending;
end;
результат: А,Д,Г,Б,В.

Форум по zeos-у содержит лишь констатацию сего факта.
У кого нибудь корректно работает сортировка кириллицы в TZQuery?
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

В винде не работает :-(
heks
новенький
Сообщения: 29
Зарегистрирован: 23.07.2012 11:50:39

Сообщение heks »

alexs писал(а):В винде не работает :-(

Спасибо :)
Проверил на Lazarus 0.9.30.4 ZeosDbo 7.0.0.-dev ubuntu 12.04 - сортировка работает корректно... :?
Куда копать?
Есть конечно план B - перенести сортировку на сервер, но хотелось бы меньшей кровью.
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

В линуксе всё работает норм. Это приколы виндового менеджера строк.
Я пока забил. Не критично.
heks писал(а):Lazarus 0.9.30.4

Чего такое старьё?
heks
новенький
Сообщения: 29
Зарегистрирован: 23.07.2012 11:50:39

Сообщение heks »

alexs писал(а):В линуксе всё работает норм. Это приколы виндового менеджера строк.
Я пока забил. Не критично.

я бы тоже забил, но не чего :D

углубляться в дебри fpc не стал, решил пока по рабоче-крестьянски (вдруг кому пригодиться):

Код: Выделить всё

unit ZDbcResultSet;
...
function TZAbstractResultSet.CompareRows(Row1, Row2: Integer;
  const ColumnIndices: TIntegerDynArray; const ColumnDirs: TBooleanDynArray): Integer;
...
vtString:
          (*было Result := AnsiCompareStr(Value1.VString, Value2.VString);*)
          Result:=WideCompareStr(UTF8Decode(PChar(Value1.VString)), UTF8Decode(PChar(Value2.VString))); (*стало*)
...

alexs писал(а):Чего такое старьё?

клиентура на маздае, лазарь из коробки с убунтой обновлять пока не стал, руки не доходят
Ответить