24.12.2009, 15:16 | #1 |
Участник
|
Like и slash в запросе.
Проблема: допустим есть таблица с полем ItemPath, содержащим путь к объекту в формате: \[layer]\[ObjectType]\[Object]
Допустим мне нужно отобрать из этой таблицы все объекты типа класс: Написал пробную джобу: X++: #define.ClassesPath("\\%1\\Classes\\*") static void selectClassesNodes(Args _args) { ItemPathTable itemPathTable str classesPath; ; classesPath = strfmt(#ClassesPath, currentAOLayer()); info(classesPath); while select itemPathTable where itemPathTable.ItemPath like classesPath { info(itemPathTable.ItemPath); } } Но записи не выбираются. Вот и дилема.
__________________
Axapta has seduced me deadly! |
|
24.12.2009, 15:21 | #2 |
Участник
|
Цитата:
Чтобы искать \, в строе поиска нужно указать \\ Поэтому должно быть так: #define.ClassesPath("\\\\%1\\\\Classes\\\\*") |
|
|
За это сообщение автора поблагодарили: HorrR (1). |
24.12.2009, 15:23 | #3 |
Участник
|
То есть, like интерпретирует эту строку как регулярное выражение и нужно двойное экранирование?
__________________
Axapta has seduced me deadly! |
|
24.12.2009, 15:24 | #4 |
Участник
|
Для таких случаев есть специальная функция queryValue(). Она экранирует все зарезервированные спецсимволы.
|
|
|
За это сообщение автора поблагодарили: HorrR (1). |
24.12.2009, 15:27 | #5 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: mazzy (2). |
24.12.2009, 17:01 | #6 |
Участник
|
А добавление символа @ перед строкой проблему не решает? Правда define уже использовать не получиться. Типа @"что-то\"
|
|