|
18.09.2007, 14:00 | #1 |
Участник
|
Выборка с помощью макроса
Есть два макроса, в которых прописаны селекты на одну и ту же таблицу, но по разным полям, пытаюсь в методе сделать так:
X++: #define.asc_desc(asc) #define.selection(#selectField1) if(bla-bla-bla) { #define.selection(#selectField2) } while #selection(table, val1, val2, #asc_desc, ...) && ... { ... } Последний раз редактировалось Dronas; 18.09.2007 в 14:02. |
|
18.09.2007, 14:03 | #2 |
Участник
|
Если это действительно необходимо, в чем я глубоко сомневаюсь,
Посмотрите макрос #InventDimSelect и сделайте также. X++: if(bla-bla-bla)
{
#define.selection(#selectField2)
} все макроопределения и т.д. происходят в момент компиляции. |
|
18.09.2007, 14:05 | #3 |
Axapta
|
Терпеть не могу макросы.
Сорри за оффтоп. |
|
18.09.2007, 14:11 | #4 |
Участник
|
Да уж, накосячил...
|
|
18.09.2007, 14:16 | #5 |
Участник
|
Макрос - это НЕ процедура. Это КОНСТАНТА. Это просто способ написания констант в отдельном месте с последующей ссылкой на это место.
Подстановка вместо имени макроса его содержимого происходит еще ДО исполнения кода. В момент компиляции. Это значит, что в Вашем случае, содержимое макроса #section() никак, никоим образом, не будет зависеть от условия. Оно всегда будет равно значению, присвоенному "ниже" по телу метода. В данном примере, всегда будет равно #define.selection(#selectField2) Соответственно, смотрите, что именно будет в теле макроса на момент выполнения цикла while |
|
18.09.2007, 14:39 | #6 |
Участник
|
X++: #define.asc_desc(asc) #localmacro.doSelect while #selection(table, val1, val2, #asc_desc, ...) && ... { ... } #endmacro if(bla-bla-bla) { #define.selection(#selectField2) #doSelect } else { #define.selection(#selectField1) #doSelect } |
|
|
|