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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.09.2021, 21:18   #1  
Perc is offline
Perc
Участник
 
182 / 41 (2) +++
Регистрация: 05.03.2005
Настройка структуры счета. Критерии
AX 2012 R3
В настройках для плана счетов есть форма из темы. Есть возможность задавать критерии с условием "начинается с".
В итоге все это потом прилетает в запрос с участием таблицы DimensionConstraintNodeCriteria (\Classes\DimensionAttributeValueGroupValidation\findConstraintNodeByParentValue)
Одно из условий в запросе:
X++:
(_displayValue like dimensionConstraintNodeCriteria.WildCardString)
_displayValue - собственно значение аналитики которое проверяется.
Наткнулся на то что запрос не возвращает то что должен бы был. Упростил, посмотрел трассировку. Первый запрос просто сделал чтобы показать, что есть на самом деле в таблице. Второй запрос возвращает строку. Третий не возвращает ничего:
X++:
SELECT * FROM DIMENSIONCONSTRAINTNODECRITERIA T1 
WHERE ((PARTITION=5637144576) AND (RECID = 5637213979 OR RECID = 5637213968))

SELECT * FROM DIMENSIONCONSTRAINTNODECRITERIA T1 
WHERE ((PARTITION=5637144576) AND ((N'48\_0000' LIKE WILDCARDSTRING ESCAPE '\' ) AND RECID = 5637213979))

SELECT * FROM DIMENSIONCONSTRAINTNODECRITERIA T1 
WHERE ((PARTITION=5637144576) AND ((N'58\_0303040302' LIKE WILDCARDSTRING ESCAPE '\' ) AND RECID = 5637213968))


В _displayValue значение были без бэкслэша. Их аксапта сама подставляет.

Это что так плохо реагирует like на подчеркивание в тексте кода?
И что с этим собственно сделать малой кровью?
Миниатюры
Нажмите на изображение для увеличения
Название: DIMENSIONCONSTRAINTNODECRITERIA.JPG
Просмотров: 113
Размер:	57.6 Кб
ID:	13239  
Старый 16.09.2021, 08:02   #2  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
336 / 475 (16) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Символ _ для like является символом шаблоном.

https://docs.microsoft.com/ru-ru/sql...l-server-ver15

Странно, что в where система экранирует значение _displayValue, а не в значении для like, ведь escape применяется к строке которая находится после like.

Понятно почему в одном случае работает, а в другом нет

шаблон 48_% - означает 48(любой символ)(любые символы) - для 48\_0000 в данном случае _ замещается на \ ну и % отрабатывает все нули.

шаблон 58_030304% - 58(любой символ)030304% - а вот для значения 58\_0303040302 получаем, что _сравнивается уже с 0 и соответственно отваливается.

Можно попробовать вот такие шаблоны :

58\\\_030304%
48\\\_%

Без использования экранирования (когда в _displayValue нет бэкслэша), т.е. 48_0000 и 58_03030402 можно было бы использовать вот такие шаблоны

48[_]%
58[_]030304%
__________________
Sergey Nefedov
За это сообщение автора поблагодарили: Perc (2).
Старый 16.09.2021, 11:31   #3  
Perc is offline
Perc
Участник
 
182 / 41 (2) +++
Регистрация: 05.03.2005
Хотел в коде до подстановки в запрос в _displayValue заменить все подчеркивание на знак вопроса. '58_0303040302' -> '58?0303040302'. Тогда аксапта подставляя в SQL меняет его обратно и бэкслеш соответственно тоже не пихает. Проверка проходит норм.
Но остается неоднозначность - на месте подчеркивание может пролезть какой-то другой знак.
Чтения доки по Like и тест помогает)
Поэтому рекомендовали набивать в шаблон 3 бэкслэша перед подчеркиванием. Без модификаций. Это работает и корректно как-будто))
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Проверка структуры счета на использование аналитики syl DAX: Программирование 3 02.06.2016 07:45
Ax2012 Настройка структуры счета - кнопка Отношения Arahnid DAX: Функционал 1 06.07.2015 20:57
DAX 2012 Настройка структур счета, кнопка Отношения MKS DAX: Функционал 4 11.09.2014 12:53
Применить предоплату: Комбинация XXX- недопустима для структуры счета kart DAX: Функционал 8 21.02.2013 21:53
Настройка Номера счета amball DAX: Функционал 6 28.02.2007 19:14
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:26.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.