powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Сортировка
11 сообщений из 11, страница 1 из 1
Сортировка
    #36114753
EKrukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кто сталкивался с такой ошибкой, помогите пожайлуста.

Имеется класс:
Class Other.TestPers Extends %Persistent
{

Property LastName As %String;

}

Данные класса:
# LastName
1 Иванов
2 Петров
3 Козлов
4 Ңұрғалиев
5 Айдыңов

При попытке сортировки по полю "LastName" возникает ошибка:
ОШИБКА #5540: SQLCODE: -400
Сообщение: Unexpected error occurred: <NLS TABLE>%0ABk1+6^CacheSql9

Тект запроса: Select LastName From Other.TestPers Order By LastName

Вопрос: почему при сортировке текствого поля, в котором имеются казахские символы возникает ошибка, как правильно добавить их в текущую локаль, с помощью утилиты cnls.exe?
ТЕКУЩАЯ ЛОКАЛИЗАЦИЯ: Россия,Русский,Unicode - RUSW.
...
Рейтинг: 0 / 0
Сортировка
    #36114976
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По идее, если есть и русские и казахские буквы, изначально кодировку базы нужно делать юникодовскую
...
Рейтинг: 0 / 0
Сортировка
    #36114983
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, хотя RUSW юникодовская чтоли?
...
Рейтинг: 0 / 0
Сортировка
    #36115016
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может в вашем случае правильней было бы перейти на юникодную базу и совсем на юникод

_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
Сортировка
    #36115215
EKrukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кодировка базы в юникоде - RUSW, еще при создании базы мы выбрали юникод.
...
Рейтинг: 0 / 0
Сортировка
    #36117130
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Описание ошибки <NLS TABLE>

В версии 5.0.21 Ваш пример работает и выводит:
LastNameАйдыңовИвановКозловПетровҢұрғалиев
Настройки локали rusw немного отличаются от Ваших: у Вас какая версия Caché, Вы меняли системную локаль rusw?
Но даже с Вашими настройками локали у меня запрос работает.

Работает ли у Вас такой запрос?:
Код: plaintext
Select LastName,upper(LastName),lower(LastName) From Other.TestPers
У меня выводится:
LastNameupperlowerИвановИВАНОВивановПетровПЕТРОВпетровКозловКОЗЛОВкозловҢұрғалиевҢҰРҒАЛИЕВңұрғалиевАйдыңовАЙДЫҢОВайдыңов
...
Рейтинг: 0 / 0
Сортировка
    #36117542
EKrukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit,

Версия 5.2.3.710.0. Upper работает также как у вас. Не работает Order By по полю с казахскими буквами. Системную локаль - RUSW не меняли.
Попробуйте Order By.
...
Рейтинг: 0 / 0
Сортировка
    #36118042
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поменяйте в Портале для БД CACHETEMP значение параметра "New Global Collation" с "Cyrillic1" на "Cache standard".
Переподключитесь к Caché и снова выполните запрос.
...
Рейтинг: 0 / 0
Сортировка
    #36118192
EKrukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit,

Спасибо большое!
Мы исправляли порядок сортировки утилитой CNLS.EXE для всех баз (как мы думаем) и не меняли установку в портале (внутри конкретной базы). При установке на первое место Cache Standart и потом Cyrillic1 ошибка не появляется. Но сортировка получается не национальная а по "весу" кодов букв. Сначала английские, потом русские, потом казахские. А хотелось бы однотипные буквы иметь рядом (К и Қ и так далее).
И главный тогда вопрос - если база уже была заполнена при одном состоянии настроек, то нужно ли что-то делать после изменения их на новые (не пострадают ли индексы) или могут "вылезти" ещё какие-то побочные эффекты ? Система работает в промышленной эксплуатации уже два года, данных много (ломать её нельзя).
...
Рейтинг: 0 / 0
Сортировка
    #36118626
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но сортировка получается не национальная а по "весу" кодов букв. Сначала английские, потом русские, потом казахские.
Если в поле LastName будут строки на двух, трёх, пяти, N языках, как будет производиться у Вас сортировка?
Буква Б или её аналог какого языка будет на первом месте, на втором и так далее?

... А хотелось бы однотипные буквы иметь рядом (К и Қ и так далее).
Тогда Вам придётся создавать свою национальную локаль с правилами присущими казахскому алфавиту. По аналогии с литовской локалью ltuw , которая появилась в Caché 2009.1.
Детали по формату данных в локали лучше обсудить в техподдержке.

И главный тогда вопрос - если база уже была заполнена при одном состоянии настроек, то нужно ли что-то делать после изменения их на новые (не пострадают ли индексы) или могут "вылезти" ещё какие-то побочные эффекты ? Система работает в промышленной эксплуатации уже два года, данных много (ломать её нельзя).
Трудно сказать. Но всегда можно сделать экспорт/импорт данных с перестройкой индексов. Ещё Вам может пригодиться метод ##class(%Library.GlobalEdit).Create() .

PS: как же у Вас эти два года работала сортировка или Вы её не использовали?
...
Рейтинг: 0 / 0
Сортировка
    #36119309
EKrukov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit,

Раньше мы эту сортировку не использовали.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Сортировка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]