|
Функции EVALUATE() не всё подвластно?
|
|||
---|---|---|---|
#18+
Гляньте, пожалуйста, на проблемку (VFP7) - вот так: cmd0="CREATE TABLE vyhod_new (fio(c80), passport c(10), adr c(58))" &cmd0 работает, а вот так: cmd0="CREATE TABLE vyhod_new (fio(c80),passport c(10),adr c(58))" EVALUATE(cmd0) выдаётся Syntax error :( А написано ж в хэлпе, что EVALUATE() хавает любое валидное Fox-выражение... И что, дескать, предпочтительнее использовать именно EVALUATE() вместо макроподстановок... :( А в переменной cmd0 - точно содержится валидное выражение, иначе оно и через макроподстановку не выполнялось бы. Или я чегой-то недопонял? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2011, 03:00 |
|
Функции EVALUATE() не всё подвластно?
|
|||
---|---|---|---|
#18+
Gost76Гляньте, пожалуйста, на проблемку (VFP7) - вот так: cmd0="CREATE TABLE vyhod_new (fio(c80), passport c(10), adr c(58))" &cmd0 работает, а вот так: cmd0="CREATE TABLE vyhod_new (fio(c80),passport c(10),adr c(58))" EVALUATE(cmd0) выдаётся Syntax error :( А написано ж в хэлпе, что EVALUATE() хавает любое валидное Fox-выражение... И что, дескать, предпочтительнее использовать именно EVALUATE() вместо макроподстановок... :( А в переменной cmd0 - точно содержится валидное выражение, иначе оно и через макроподстановку не выполнялось бы. Или я чегой-то недопонял? И какой результат вычисления ожидается при Evaluate для "Create Table"? Теплое с мягким путаете :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2011, 04:21 |
|
Функции EVALUATE() не всё подвластно?
|
|||
---|---|---|---|
#18+
EVALUATE() вычисляет выражение, а не выполняет команды. В твоем случае возможна только макроподстановка. Gost76А написано ж в хэлпе, что EVALUATE() хавает любое валидное Fox-выражение... И что, дескать, предпочтительнее использовать именно EVALUATE() вместо макроподстановок... :( Предпочтительно только потому что макроподстановка медленнее выполняется. Лучше по возможности не использовать ни то, ни другое. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2011, 06:53 |
|
Функции EVALUATE() не всё подвластно?
|
|||
---|---|---|---|
#18+
To Gost77: Спасибо за участие, но разве не логично предполагать, что если уж хэлпом предлагается использовать EVALUATE() вместо макроподстановки, то, очевидно, что сей предлагаемый вариант долже полностью охватывать функциональность макроподстановки? Иначе - нЕзачем его и предлагать. To Dima T: Большое спасибо! Вот в таком изложении - всё понятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2011, 20:09 |
|
Функции EVALUATE() не всё подвластно?
|
|||
---|---|---|---|
#18+
Причина, по которой, по возможности, следует избегать макроподстановок не вполне очевидная. И скорость это всего-лишь одна из причин. Причем, сама по себе, не такая уж и важная. Тут, скорее, комплекс причин, которые в двух словах не опишешь. Если интересуют подробности, то можно посмотреть здесь Макроподстановка ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2011, 21:08 |
|
Функции EVALUATE() не всё подвластно?
|
|||
---|---|---|---|
#18+
Сорри, писал под гостевым ником Gost76. Спасибо Вам за полезнейшую статью, ВладимирМ! Почерпнул оттуда много нужного. Я как раз и стараюсь избегать макроподстановок. Использую их, действительно, как "средство исполнения кода, окончательный синтаксис которого формируется в процессе его исполнения" в том случае, когда "лекарство хуже болезни" :) В моей ситуации речь идёт о программе конвертирования исходных данных из текстового и эксельного формата в формат dbf-таблиц. Эту программу приходится постоянно модифицировать из-за того, что предприятия-поставщики исходных данных любят часто вносить непредсказуемые изменения в их формат: то колонки добавят/уберут, то изменят их очерёдность следования, то увеличат/уменьшат их предельную ширину, то... В общем, фантазия - безгранична. Поэтому и приходится некоторые команды (проверки содержимого исходных полей, создания "принимающих" dbf-таблиц, и т.п.) формировать каждый раз заново, ибо нельзя наперёд предсказать, как они должны будут выглядеть для текущего сеанса конвертации :) Но после прочтения Вашей статьи - я вижу, что смогу ещё уменьшить количество используемых макроподстановок в программе. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2011, 23:37 |
|
Функции EVALUATE() не всё подвластно?
|
|||
---|---|---|---|
#18+
На всякий случай, по поводу создания таблиц есть такая возможность, как создание таблицы на основе предварительно созданного массива определенной структуры Код: plaintext
Какова должна быть структура массива MyArray можно посмотреть в описании к функции AFIELDS(). Однако следует заметить, что если создаются свободные таблицы (не включенные в контейнер базы данных), то реально из этого массива будут использоваться только первые 6 столбцов. На примере исходного вопроса можно сделать так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2011, 11:37 |
|
Функции EVALUATE() не всё подвластно?
|
|||
---|---|---|---|
#18+
Благодарю Вас, ВладимирМ - я как раз только что и пробовал варианты применения команд CREATE TABLE ... FROM ARRAY ... и CREATE ... FROM myTable, ведь таблицу myTable тоже можно создавать и наполнять по своему усмотрению. В принципе - оба вирианта избавляют от макроподстановки. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2011, 14:18 |
|
|
start [/forum/moderation_log.php?user_name=Pitcher]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
others: | 675ms |
total: | 852ms |
0 / 0 |