Правильным синтаксисом, в случае, если
name_opened_table - это строковая переменная, не имеющая отношение к таблице, открытой с именем
"name_opened_table", и содержащая только имя как текст, т.е. когда имя таблицы было ВЫЧИСЛЕНО и присвоено переменной:
Код: Выделить всё
dim name_opened_table as string
open table "world"
name_opened_table="world"
будет использование
name_opened_table везде, как имени таблицы, во всех командах кроме команды обращения к колонке
world.obj - правильно, name_opened_table.obj - нет
Для обхода используется следующий синтаксис:
Код: Выделить всё
dim iObj as Alias
iObj=name_opened_table+".obj"
f_x = ObjectGeography(iObj, OBJ_GEO_LINEBEGX)
На вопрос "почему так , через ...?" Могу ответить, только - "Because"
------
Теперь общие замечания
а) правильная форма команды Open Table :
Open Table "c:\world.tab" As world - вот тут видно, что здесь явно создается переменная world, которая до этого создавалась НЕ явно.
b) Если только вы не читаете названия таблиц командой
TableInfo( table_id, TAB_INFO_NAME), предположение о правильном имени таблицы может оказаться неверным. Безопасный способ - проверять имя открытой таблицы и сразу же сохранять его в строковой переменной
Код: Выделить всё
Dim name_tab as string
Open Table "world"
name_tab = TableInfo([b]0[/b], TAB_INFO_NAME)
c) обращаться к таблице ДО выполнения команды
Fetch - небезопасно
Код: Выделить всё
Fetch first from name_tab ' здесь можно использовать строковую переменную
dim iObj as Alias
iObj=name_tab+".obj" ' возможен и вариант с синтаксисом col - name_tab+".COL1" или name_tab+".COL(" + 1 + ")"
fx=ObjectGeography([b]iObj[/b], OBJ_GEO_LINEBEGX)
d)Разумнее предполагать, что
Fetch first from name_tab и
Fetch first from "world" и
Fetch first from world будут в начале указывать на одну и туже строку таблицы,
А после использования команды
Fetch next from name_tab - уже на разные
--------------
Ну и напоследок, что бы достать координаты точки циклы использовать - не обязательно, можно использовать и запрос
select ObjectGeography(Obj, OBJ_GEO_LINEBEGX) from name_tab
даст то же самый результат, кроме того, что либо вы сами зададите имя новой таблицы results_table в синтаксисе:
select ObjectGeography(Obj, OBJ_GEO_LINEBEGX) from name_tab Into results_table Noselect
либо отобранные данные будут помещены в таблицу-запрос Selection