Страница 1 из 1

UniDAC TLiteUtils.RegisterCollation

Добавлено: Сб 03 июн 2017 09:15
S_Gur
Господа, поделитесь, пожалуйста, примером использования TLiteUtils.RegisterCollation. У меня не работает сортировка по строковому полю в юникодной базе

Re: UniDAC TLiteUtils.RegisterCollation

Добавлено: Вт 06 июн 2017 10:34
Alexp
Добрый день,

ниже приведен код для сортировки по Unicode полю

метод сортировки:

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

function collation_callback(const Str1, Str2: string): Integer;
var
  wstr1, wstr2: WideString;
begin

  wstr1 := WideUpperCase(Str1);
  wstr2 := WideUpperCase(Str2);

  if wstr1 > wstr2 then
    Result := 1
  else if wstr1 < wstr2 then
    Result := -1
  else
    Result :=  0;
end;
регистрация:

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

  TLiteUtils.RegisterCollation(UniConnection1, 'SYSTEMNOCASE', collation_callback);
SQL:

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

CREATE TABLE [t_unicode](
    [f_id] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE, 
    [f_text] varchar2(50));

select * from t_unicode
order by f_text COLLATE SYSTEMNOCASE desc

Re: UniDAC TLiteUtils.RegisterCollation

Добавлено: Вт 06 июн 2017 11:15
S_Gur
Большое спасибо. Все заработало

Re: UniDAC TLiteUtils.RegisterCollation

Добавлено: Вт 06 июн 2017 14:40
Alexp
Пожалуйста, обращайтесь, если у Вас возникнут какие-либо вопросы.