|
Macro подстановка
|
|||
---|---|---|---|
#18+
Раньше этот кусок кода работал Код: sql 1. 2. 3.
Теперь выдает ошибку: Код: sql 1.
Есть какие мысли? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 11:34 |
|
Macro подстановка
|
|||
---|---|---|---|
#18+
Используй EVAL() ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 12:16 |
|
Macro подстановка
|
|||
---|---|---|---|
#18+
И посмотри что в tcAlias ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 12:18 |
|
Macro подстановка
|
|||
---|---|---|---|
#18+
Более приближенный к реальности код: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Ошибка соответственно: Код: sql 1.
Вот этот код с EVAL() работает: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
1) Первый фрагмент кода работал до настоящего времени, вроде бы никаких изменений серьезных не было, что повлияло на его работу - непонятно. 2) В tcAlias - имя курсора. 3) Не понятно, откуда берется символ "Й" . 4) Ошибку вызывает только макроподстановка в конструкции "IF" . Строка " ldAnalizedDate = &tcAlias..mj_setdate ", например, отрабатывает нормально (Второй фрагмент кода с EVAL() работает). Пока капаю интернет, может что удастся найти ... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 13:03 |
|
Macro подстановка
|
|||
---|---|---|---|
#18+
faustgreen Вот этот код с EVAL() работает: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Ну и оставь так, выделенные строчки тоже на EVAL() замени. И это Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 13:27 |
|
Macro подстановка
|
|||
---|---|---|---|
#18+
faustgreen Более приближенный к реальности код: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... 1) Первый фрагмент кода работал до настоящего времени, вроде бы никаких изменений серьезных не было, что повлияло на его работу - непонятно. 2. Тем более что макро тут как зайцу стоп-сигнал. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Пока капаю интернет, может что удастся найти ...Чем кАпаешь? Капельками, что доктор прописал или самолечением занимаешься? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 13:33 |
|
Macro подстановка
|
|||
---|---|---|---|
#18+
Я то переделаю. Просто интересно разобраться, почему так происходит. Есть подозрение, что это как то связано с областями видимости или типом передачи параметра (по ссылке/значению). ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 13:40 |
|
Macro подстановка
|
|||
---|---|---|---|
#18+
Sergey Sizov, 1) Когда писал, что в tcAlias - имя курсора, имел ввиду, что там лежит имя курсор, а не какой-нибудь мусор или null. 2) "Й" клеется к имени поля, а не курсора. 3) Sergey Sizov2. Тем более что макро тут как зайцу стоп-сигнал. Тут мне немного не хватает знаний. Внитри скана есть еще выборки "select * from ...". И при очередном скане будет ли браться имено поле из исходной таблицы? Я привык явно прописывать, что откуда брать (нагляднее и надежнее). ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 13:49 |
|
Macro подстановка
|
|||
---|---|---|---|
#18+
Sergey Sizov Чем кАпаешь? Капельками, что доктор прописал или самолечением занимаешься? :) Валерьяночку потягиваю, нервишки восстанавливаю ... Что накапал обнаружил: У меня есть файл "Reports.prg" с упрощенной структурой: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Т.е. в зависимости от переданного параметра формируется нужный отчет, например Код: sql 1.
Код, который вызывал ошибку, находится в одном из блоков "CASE". Все отлично работало до тех пора, пока я не добавил новый отчет (Новый блок "CASE" с реализацией). Удаляю этот CASE - все работает. Хм... Но этот новый код никак не связан с тем, который вызывает ошибку ... Вновь добавляю новый отчет, но теперь удаляю другую секцию CASE не связанную ни с новым отчетом, ни с проблемным - все ок! Выводы: Получается макро-подстановка каким то образом зависит от размера файла. При этом если убрать макроподстановку (заменить на тот же EVAL - то все отчеты работают). Тут размер файла не влияет на корректность работы отчетов. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 15:29 |
|
Macro подстановка
|
|||
---|---|---|---|
#18+
Причем похоже на это поведение влияет "компилируемая" часть *.prg файла. Пробовал добавить в него пустые строки или коменты - не повлияло, отчет работал. Но если добавить внутрь кода 100 строк messagebox("Hello, World!") - появляется ошибка. Возможно это не ограничение на файл, а на размер процедуры, хз. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 15:42 |
|
Macro подстановка
|
|||
---|---|---|---|
#18+
Как уже выше написали макроподстановка это очень опасный инструмент и там где можно обойтись без нее лучше ее не использовать. На самом деле очень мало случаев когда она действительно нужна. Как следствие ее мало используют и мало кто получал ту проблему, которая возникла у тебя. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 16:16 |
|
|
start [/forum/topic.php?fid=41&tid=1581406]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
413ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
others: | 277ms |
total: | 761ms |
0 / 0 |