|
![]() |
#1 |
Участник
|
Дело не в условии. Дело в том, что абсолютно все макроподстановки выполняются на этапе компиляции (где, как вы сами понимаете значение переменных ещё не определено). Хотите runtime - используйте подпрограммы.
Цитата:
X++: if ((%2) == 1) |
|
|
За это сообщение автора поблагодарили: Gustav (3). |
![]() |
#2 |
Участник
|
Цитата:
Второй же параметр попадая в условие #IF.ARG(1) Сравнил как кусок кода, а не как значение параметра. Зачем? вопрос чисто теоретический, понятно, что я могу сделать и по-другому но просто интересно. Версия Ax 4.0 sp2 |
|
![]() |
#3 |
Участник
|
|
|
![]() |
#4 |
Moderator
|
Цитата:
Измените тип переменной AccountNum и посмотрите, что получится: X++: str AccountNum = "Клиент1"; // AccountNum AccountNum = "Клиент1"; Еще иллюстрация. Верните всё обратно, после чего внесите такие изменения: X++: AccountNum AccountNum = "Клиент1"; .................. while select * from CustTable // where CustTable.AccountNum == %1 where CustTable.AccountNum %1 .................. //#cycle(AccountNum,int1) #cycle(== AccountNum,int1) } |
|
![]() |
#5 |
Участник
|
Цитата:
Сообщение от Gustav
![]() Не-а. Именно КУСОК КОДА - грубо говоря, фрагмент текста программы вида "AccountNum".
Измените тип переменной AccountNum и посмотрите, что получится: X++: str AccountNum = "Клиент1"; // AccountNum AccountNum = "Клиент1"; Для исправления ошибки досточно всего-лишь явно задать размерность символьной переменной X++: str 10 AccountNum = "Клиент1"; |
|
|
За это сообщение автора поблагодарили: Gustav (2). |
![]() |
#6 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: Gustav (2). |