Показать сообщение отдельно
Старый 14.04.2006, 10:31   #4  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2480 (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