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

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

Добавлено: 04 Апрель 2013, 12:45
kreator
C8 (9759), Firebird 2.1. Хочу некую таблицу через стандартный броуз сортировать по стринговому полю. Получается, что сначала отображаются записи с большими буквами, потом с маленькими. Нужно, чтобы после А шла а, потом Б, потом б. Посмотрел, как формируются запросы - upper не используется принципиально. CLACOLSEQ тоже не даёт никакого эффекта. В хелпе предлагают использовать PROP:ServerCaseInsensitive. Почему-то тоже не дал эффекта. Хочу спросить - нужная мне сортировка сейчас зависит от SQL сервака (т.е. у меня Firebird тупой)? Или можно что-то в конституции подправить?
P.S. Проверил быстренько на TPS - всё сортирует как надо.

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

Добавлено: 05 Апрель 2013, 12:32
Yufil
Если хочешь Upper по индексу в Словаре, надо с описания индекса снять флажок Case Sensitive.

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

Добавлено: 05 Апрель 2013, 14:26
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 ещё тот.