UniDAC TLiteUtils.RegisterCollation

Обсуждение возникших проблем, предложений и ошибок UniDAC компонентов
Ответить
S_Gur
Сообщения: 2
Зарегистрирован: Сб 03 июн 2017 09:09

UniDAC TLiteUtils.RegisterCollation

Сообщение S_Gur » Сб 03 июн 2017 09:15

Господа, поделитесь, пожалуйста, примером использования TLiteUtils.RegisterCollation. У меня не работает сортировка по строковому полю в юникодной базе

Alexp
Devart Team
Сообщения: 349
Зарегистрирован: Пн 27 дек 2010 10:34

Re: UniDAC TLiteUtils.RegisterCollation

Сообщение Alexp » Вт 06 июн 2017 10:34

Добрый день,

ниже приведен код для сортировки по 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

S_Gur
Сообщения: 2
Зарегистрирован: Сб 03 июн 2017 09:09

Re: UniDAC TLiteUtils.RegisterCollation

Сообщение S_Gur » Вт 06 июн 2017 11:15

Большое спасибо. Все заработало

Alexp
Devart Team
Сообщения: 349
Зарегистрирован: Пн 27 дек 2010 10:34

Re: UniDAC TLiteUtils.RegisterCollation

Сообщение Alexp » Вт 06 июн 2017 14:40

Пожалуйста, обращайтесь, если у Вас возникнут какие-либо вопросы.

Ответить