powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Забыл, как избавиться от макроподстановки :(
5 сообщений из 5, страница 1 из 1
Забыл, как избавиться от макроподстановки :(
    #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
Забыл, как избавиться от макроподстановки :(
    #39262631
tor300
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
?ALLTRIM(STR(EVALUATE(m.Tablica+".Pole1"),8,4))
...
Рейтинг: 0 / 0
Забыл, как избавиться от макроподстановки :(
    #39262641
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tor300, Спасибо!
Работает :)
...
Рейтинг: 0 / 0
Забыл, как избавиться от макроподстановки :(
    #39262783
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Если перед именем нет никакого префикса, то FoxPro предполагает, что речь идет об имени поля таблицы, открытой в текущей рабочей области. И только если такого поля нет, выполняется поиск переменной памяти с таким именем.

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

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

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


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