Проблема с сортировкой.

ODBC

Модератор: Andrew™

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
kreator
✯ Ветеран ✯
Сообщения: 5080
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 23 раза

Проблема с сортировкой.

Сообщение kreator »

C8 (9759), Firebird 2.1. Хочу некую таблицу через стандартный броуз сортировать по стринговому полю. Получается, что сначала отображаются записи с большими буквами, потом с маленькими. Нужно, чтобы после А шла а, потом Б, потом б. Посмотрел, как формируются запросы - upper не используется принципиально. CLACOLSEQ тоже не даёт никакого эффекта. В хелпе предлагают использовать PROP:ServerCaseInsensitive. Почему-то тоже не дал эффекта. Хочу спросить - нужная мне сортировка сейчас зависит от SQL сервака (т.е. у меня Firebird тупой)? Или можно что-то в конституции подправить?
P.S. Проверил быстренько на TPS - всё сортирует как надо.
We are hard at work… for you. :)
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Re: Проблема с сортировкой.

Сообщение Yufil »

Если хочешь Upper по индексу в Словаре, надо с описания индекса снять флажок Case Sensitive.
kreator
✯ Ветеран ✯
Сообщения: 5080
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 23 раза

Re: Проблема с сортировкой.

Сообщение kreator »

Да в том-то и дело, что это не работает. Вот из хелпа:

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


In previous versions of Clarion, the SQL file drivers assumed that your SQL server was set up to support case sensitive searches. This required a modification of all case insensitive keys defined in the data dictionary to achieve optimum performance.
The SQL drivers now assume that the server is set up with case insensitive searches, and no longer generate UPPER calls in the SQL code when requested by the Clarion code. To turn off this behavior (force generation of UPPER calls), use PROP:ServerCaseInsensitive. When this file property is active (1), you will make the file driver behave as in previous versions (prior to 6.3).

This property only needs to be set once per connection and can only be done after a connection to the database has been established

Example:

Customer{PROP:ServerCaseInsensitive} = 1

!server searches are now case insensitive.

Похоже, что это правда, потому что я проверял генерируемые запросы, нету UPPER. Даже, когда ставлю явно File{prop:Order} = 'upper(FIL:Name)', ничего не происходит.

Я всё же нашёл в Firebird возможность изменить сортировку для стрингового поля, есть там такой параметр. Надо только зайти в каждую таблицу, и изменить это для каждого стрингового поля. После этого сортирует как надо, НО. Иногда почему-то задваиваются записи, с локаторами проблема. В общем, непонятно, то ли драйвер ODBC не так работает, то ли сам сервак. Грешить на Clarion рано, хочу проверить на другом серваке, всё-таки Firebird ещё тот.
We are hard at work… for you. :)
Ответить