AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.08.2005, 11:25   #1  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
NLS_LOWER во View
Oracle и Axapta 3.0

Если делаю query к таблице, то в оракловском запросе к строковым полям и парметрам запроса применяется функция NLS_LOWER.

... SUBSTR(NLS_LOWER(B.DATAAREAID),1,3)=NLS_LOWER('dat') ...

Если делаем query к представлению (view), то функция NLS_LOWER к строковым полям не применяется. Зато она успешно продолжает применяться к параметрам.

... A.DATAAREAID=NLS_LOWER('dat') ...

Конечно в поле DATAAREAID хранятся значения только со строчными буквами, а если я хочу применить условие к другому полю, в котором ещё и заглавные буквы есть. Можно забыть про это?
__________________
Дмитрий
Старый 11.08.2005, 12:00   #2  
sia is offline
sia
Участник
 
26 / 15 (1) ++
Регистрация: 14.07.2005
Адрес: Москва
Это глюк Аксапты.
Мне победить не удалось... Пришлось из-за этого отказать от использования View
Старый 13.04.2006, 15:50   #3  
Roman. ~RVS is offline
Roman. ~RVS
Участник
Аватар для Roman. ~RVS
 
26 / 10 (1) +
Регистрация: 08.10.2004
Адрес: Москва
Цитата:
Сообщение от sia
Это глюк Аксапты.
Мне победить не удалось... Пришлось из-за этого отказать от использования View
тема уже старенькая, но есть вопрос: под MSSQL такая проблема есть?

под ораклом кто-нибудь придумал как побороть?
__________________
Best wishes,
Roman. ~RVS
Старый 13.04.2006, 17:34   #4  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
А в ролапе разве не победили эту беду?
Старый 14.04.2006, 09:17   #5  
Roman. ~RVS is offline
Roman. ~RVS
Участник
Аватар для Roman. ~RVS
 
26 / 10 (1) +
Регистрация: 08.10.2004
Адрес: Москва
Цитата:
Сообщение от George Nordic
А в ролапе разве не победили эту беду?
не в курсе.

попробовал только что под MSSQL (мне вчера аж поплохело, как я обнаружил сию "особенность" - отчетность построена частью на view была, но проект под MSSQL)

дак вот: под MSSQL вроде бы все работает как надо. Простейшая проверка: открыть view в обозревателе и по строковому полю с большими буковками сделать фильтр.

под ораклом таблица становится пустой, под MSSQL - фильтрует.

вот вам и минус достоинство оракла перед mssql. понятно, что оракл тут не причем, но минус есть.

кто-нибудь поборол эту ерунду? с утра решил покопаться внутри репозитария в надежде, что прямо там лежат классы по созданию текста view - если туда прямо в селект вставить понижение регистра, то это как бы решит проблемму выборки.

но здаётся мне, что время зря трачу.
__________________
Best wishes,
Roman. ~RVS
Старый 14.04.2006, 10:31   #6  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Для MS SQL - при создании нового инстанса можно выбрать case sensitive. По умолчанию предлагает нечувствительность к регистру.

Для Axapta'ы - чувствительность к регистру для запросов б/д регулируется параметром CASESENSITIVE, хранящимся в таблице SQLSystemVariables. Для Oracle он включен, для MS SQL выключен (эти параметры устанвливаются при создании б/д и прописаны в классе SqlDatabaseInit).
Если включить этот параметр для MS SQL, то в запросы будет добавляться функция "{fn LCASE(%1)}". Причем, сами запросы строятся несколько "небрежно". Вот, например, запрос по пользователям
X++:
SELECT A.ID,A.DEL_CHECKGENERAL,A.DEL_CHECKAOS,A.DEL_CHECKLABELUSE,
A.DEL_CHECKAOTPATHUNIQUE,A.DOCUHANDLINGACTIVE,A.DEL_CHECKDATE,
A.DEL_CHECKFEATUREKEY,A.DEL_CHECKLABELANDHELP,
A.DOCUTOOLBARBUTTONACTIVE,A.HELPMARKEMPTYLINKS,
A.DEL_CHECKSPECIFIC,A.HELPTHEME,A.GENERATEEXECUTIONPLAN,
A.EMAIL,A.COMPILERTARGET,A.LANGUAGE,A.RECID
FROM SYSUSERINFO A(INDEX(I_956USERIDX) NOLOCK)  
WHERE (ID={fn LCASE(?)})
ORDER BY A.ID OPTION
А вот так строятся View
X++:
CREATE VIEW CUSTVIEW AS 
SELECT A.ACCOUNTNUM AS ACCOUNTNUM,A.NAME AS NAME,
A.DATAAREAID AS DATAAREAID,A.RECID AS RECID,
B.DATAAREAID AS DATAAREAID#2,B.CUSTGROUP AS CUSTGROUP,
B.NAME AS CUSTGROUPNAME 
FROM CUSTTABLE A,CUSTGROUP B 
WHERE ({fn LCASE(A.CUSTGROUP)}=B.CUSTGROUP)
Так что, если для MS SQL включить зависимость от регистра, то все строковые данные надо будет заносить исключительно в нижнем регистре (с включенным параметром CASESENSITIVE), т.е повторится ситуация с Oracle

PS Версия Axapta'ы указана в подписи
__________________
Axapta v.3.0 sp5 kr2
Старый 14.04.2006, 11:27   #7  
Roman. ~RVS is offline
Roman. ~RVS
Участник
Аватар для Roman. ~RVS
 
26 / 10 (1) +
Регистрация: 08.10.2004
Адрес: Москва
Цитата:
Сообщение от AndyD
Для MS SQL - при создании нового инстанса можно выбрать case sensitive. По умолчанию предлагает нечувствительность к регистру.

Для Axapta'ы - чувствительность к регистру для запросов б/д регулируется параметром CASESENSITIVE, хранящимся в таблице SQLSystemVariables. Для Oracle он включен, для MS SQL выключен (эти параметры устанвливаются при создании б/д и прописаны в классе SqlDatabaseInit).
т.е. я правильно понимаю, что если его включить под ораклом, то станет все нормально?
__________________
Best wishes,
Roman. ~RVS
Старый 14.04.2006, 11:33   #8  
Roman. ~RVS is offline
Roman. ~RVS
Участник
Аватар для Roman. ~RVS
 
26 / 10 (1) +
Регистрация: 08.10.2004
Адрес: Москва
Цитата:
Сообщение от Roman. ~RVS
т.е. я правильно понимаю, что если его включить под ораклом, то станет все нормально?
мда... не станет.

стало еще хуже - теперь смена регистра вообще перестала быть - даже логин пришлось вводить большими буквами, а сама аксапта опустела - ни меню ни функционала...
__________________
Best wishes,
Roman. ~RVS
Старый 14.04.2006, 11:37   #9  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Да - надо будет учитывать регистр во всех операциях.
По поводу входа - надо забивать имя пользователя с учетом регистра, тогда загрузится нормально, но работать будет не очень удобно
__________________
Axapta v.3.0 sp5 kr2
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Распределенная база данных на основе View Владимир Максимов DAX: Программирование 27 04.09.2007 13:21
Доступ к VIEW SQL SERVER из Axapta 111andrei DAX: Программирование 13 02.12.2005 11:19
Обновление данных в View rrkrivov DAX: Программирование 5 08.04.2005 20:56
View + Grid + CheckBox Yprit DAX: Программирование 4 22.02.2005 10:54
View's - возможность добавления новых записей Андре DAX: Программирование 13 16.02.2005 12:16

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 07:20.