|
21.01.2008, 15:48 | #1 |
Участник
|
Название номенклатуры отображается маленькими буквами
Название номенклатуры отображается маленькими буквами. Форма подобна остаткам но добавлены свои поля. В стандартной форме название номенклатуры отображается нормально. В чём может быть причина?
|
|
21.01.2008, 15:52 | #2 |
Участник
|
Посмотри значение свойства ChangeCase для проблемного объекта формы
|
|
21.01.2008, 16:59 | #3 |
Moderator
|
У нас, с базой на Oracle, такое происходит после выполнения в Аксапте операции group by.
P.S. Поиск по форуму по строке "маленькие буквы" выдает еще такую тему с объяснением mazzy: Почтовые индексы |
|
21.01.2008, 17:04 | #4 |
Участник
|
База оракловая, группировка аналогичная стандартной форме остатков тоесть в зависимости от отображения аналитик, свойство изменения регистра установлено в авто.
|
|
21.01.2008, 17:36 | #5 |
Участник
|
Цитата:
Сообщение от Gustav
У нас, с базой на Oracle, такое происходит после выполнения в Аксапте операции group by.
P.S. Поиск по форуму по строке "маленькие буквы" выдает еще такую тему с объяснением mazzy: Почтовые индексы Наименование вряд ли кто сделает ключевым. Кроме того, в этой ветке говорилось, что в стандартной форме выводится нормально поэтому вряд ли из-за оракла. |
|
21.01.2008, 17:13 | #6 |
Member
|
В стандартной форме название номенклатуры выводится дисплэй-методом.
У вас точно также или в виде поля БД для поиска и сортировки?
__________________
С уважением, glibs® |
|
22.01.2008, 11:57 | #7 |
Участник
|
|
|
21.01.2008, 18:03 | #8 |
Administrator
|
Ну из исходной постановки вопроса - с учетом оракловой БД в общем-то четко следует - что это поле, по которому прошло group by - Gustav прав.
Тут индексы ни при чем. Оракл, группируя - игнорирует регистр букв (это нормально, т.к. включена соотв настройка). А Аксапта - накладывает функцию nls_lower - приводя все к маленьким буквам. В случае SQL Server отсутствует функция nls_lower Кажется так. Пусть меня поправят гуру Оракла.
__________________
Возможно сделать все. Вопрос времени |
|
21.01.2008, 18:19 | #9 |
Moderator
|
Цитата:
Ну, смех - смехом, а подоотчетники наши иногда обижаются, когда себя в отчете полностью в лоукейсе видят. Вот маленький тест - ораклисты могут проверить: X++: static void Test_OracleGroupBy(Args _args) { EmplTable emplTable; ; while select Name from emplTable // просто или order by Name { info(emplTable.Name); // Иванов Иван Иванович } while select Name from emplTable GROUP BY Name { info(emplTable.Name); // иванов иван иванович } } |
|
21.01.2008, 18:55 | #10 |
Moderator
|
+1 - это Oracle. Подноготная всего этого такова: В Аксапте все сравнения строк и сортировки по определению case insensitive. В MS SQL этот эффект достигается установкой case-insensitive кодовой страницы БД. В Oracle аналогичной функциональности долгое время не было (хотя, говорят,в 10 версии что-то появилось). Поэтому в старых версиях Аксапты (2.1,2.5) при записи в любое поле, которое было включено в индекс, данные переводились в нижний регистр, что изрядно нервировало пользователей (Как-то неприятно когда ФИО в emplId пишется и выводится на экран в нижнем регистре) . Поэтому начиная с версии Аксапта 3.0 (которая работала с ораклом 9 и выше, в котором уже можно было строить индекс не по полю, а по функции от поля), при указании в запросе сравнения по строчному полю или сортировки/группировки по таковому, поле заключается в функцию NLS_LOWER. Кроме того, при построении индексов, вместо строчных полей туда включается значение NLS_LOWER от поля. Таким образом - в большинстве случаев, в отличие от старых версий Аксапты, для пользователя незаметны внутренние махинации системы с регистром. Единственное исключение - как раз группировка. Ведь если мы сгруппировали по NLS_LOWER(emplId), то в списке полей в select мы тоже должны указать NLS_LOWER(emplId), поскольку в список полей агреггирующего запроса можно включать только значения выражений группировки и агрегатные функции. Поэтому, если строчное поле включено в список группировки, то и в списке группировки и в список полей в запросе оно включается с помощью NLS_LOWER()
|
|
|
За это сообщение автора поблагодарили: aidsua (1), gl00mie (3). |
22.01.2008, 19:09 | #11 |
Member
|
Я так и думал. Впрочем, вам уже все написали.
А Oracle действительно нельзя заставить работать в case insensitive?
__________________
С уважением, glibs® |
|
22.01.2008, 19:52 | #12 |
Administrator
|
Здесь написано следующее:
Цитата:
Особенности сортировки
Каждый из возможных порядков сортировки, задаваемых параметром NLS_SORT, имеет свои особенности. ... Начиная с Oracle10g, к имени лингвистической сортировки можно добавлять _CI (регистро-независимая сортировка) и _AI (регистро-независимая и accent-insensitive сортировка).
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 22.01.2008 в 19:55. |
|