Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Забыл, как избавиться от макроподстановки :( / 5 сообщений из 5, страница 1 из 1
26.06.2016, 19:58
    #39262602
neznajka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забыл, как избавиться от макроподстановки :(
Знаю, что НЕ всегда можно корректно избавиться от макроподстановки, но можно ли это сделать вот в таком случае: ?

Tablica='ImyaTablicy' && Имя имеющейся таблицы

?ALLTRIM(STR(&Tablica..Pole1,8,4)) && Эта макроподстановка срабатывает правильно

А вот эти мои попытки избавиться от макроподстановки оказались безрезультатными :(
?ALLTRIM(STR(EVALUATE((Tablica).Pole1),8,4))
?ALLTRIM(STR(EVALUATE(Tablica.Pole1),8,4))
?ALLTRIM(STR(EVALUATE(Tablica).Pole1,8,4))
?ALLTRIM(STR(EVALUATE(evaluate(Tablica).Pole1),8,4))
?ALLTRIM(STR((Tablica).Pole1,8,4))
?ALLTRIM(STR((Tablica)..Pole1,8,4))

Может, есть ещё какой-нибудь способ?
Это мне нужно, чтобы передавать имя таблиц в функцию, в которой будут обрабатываться данные этих таблиц. В принципе, можно всё сделать и макроподстановкой, но хотелось бы обойтись без неё.
...
Рейтинг: 0 / 0
26.06.2016, 22:03
    #39262631
tor300
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забыл, как избавиться от макроподстановки :(
?ALLTRIM(STR(EVALUATE(m.Tablica+".Pole1"),8,4))
...
Рейтинг: 0 / 0
26.06.2016, 23:24
    #39262641
neznajka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забыл, как избавиться от макроподстановки :(
tor300, Спасибо!
Работает :)
...
Рейтинг: 0 / 0
27.06.2016, 11:26
    #39262783
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забыл, как избавиться от макроподстановки :(
1. Если перед именем нет никакого префикса, то FoxPro предполагает, что речь идет об имени поля таблицы, открытой в текущей рабочей области. И только если такого поля нет, выполняется поиск переменной памяти с таким именем.

2. По умолчанию, алиас рабочей области, в которой открыта таблица, совпадает с именем таблицы. А поскольку переменная содержит имя, то можно использовать выражение имени (скобки) для перехода в нужную рабочую область

Код: sql
1.
2.
3.
select (m.Tablica)

?ALLTRIM(STR(Pole1,8,4))
...
Рейтинг: 0 / 0
07.07.2016, 10:10
    #39269472
neznajka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Забыл, как избавиться от макроподстановки :(
To ВладимирМ :
Да, насчёт "Если перед именем нет никакого префикса, то FoxPro предполагает, что речь идет об имени поля таблицы, открытой в текущей рабочей области. И только если такого поля нет, выполняется поиск переменной памяти с таким именем" - я постоянно об этом забываю и наступаю на эти грабли :( Хобби сформировалось уже, что ли?.. :)
А 2-й пункт - иногда применяю. Пока снова по забывчивости не создам переменную с именем поля... Потому и решил было в данном случае поискать какие-нибудь более "контрастные" "макро-подобные" альтернативы.
В любом случае - спасибо Вам! Вопрос решён успешно.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Забыл, как избавиться от макроподстановки :( / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]