Доступ к строке атрибутивной таблицы из темы

0 голосов
спросил 26 Янв, 09 от Vcevolod (200 баллов) в категории Программные продукты Esri
Задача: из атрибутивной таблицы,в которой выделена запись, получить ID этой записи. По этому ID соединиться с внешней программой и из нее получить данные из БД для представления их в Brouser.Если атрибутивная таблица активна, то проблем нет:

theTable=av.GetActiveDoc
theVTab=theTable.GetVTab
theField=theVTab.FindField("id")
for each rec in theVTab.GetSelection   
s = theVTab.ReturnValueString(theField,rec)
end
System.Execute("c:\Program Files\Internet Explorer\IEXPLORE.exe localhost/zapArcView?q="+s.AsString)

Хотелось бы как представлено в Help:
myView = av.GetActiveDoc
myTheme = myView.GetThemes.Get(0)
myFTab = myTheme.GetFTab
myField = myFTab.FindField("id")
for each rec in myFTab.GetSelection
System.BasicEcho("Selected state name is"++
myFTab.ReturnValueString(myField,rec),FALSE)
end

Не работает. ArcView 3.1 c Patchem
    

4 Ответы

0 голосов
ответил 26 Янв, 09 от TDenis (42,620 баллов)
Ну так и делайте как представлено в help. Вы же делаете совсем по-другому.
Может быть я не совсем понимаю, что именно вы хотите.
Ваш первый код будет работать только тогда, когда активное окно - атрибутивная таблица.
Ваш второй код (из help) будет работать тогда, когда активное окно - view (вид, карта).

Если Вы знаете название view (карты) и theme (темы, слоя) и хотите получать данные всегда из них, тогда:
aView = av.FindDoc("View1")
aTheme = aView.FindTheme("ThemeName")
aTab = aTheme.GetFTab
aField = aTab.FindField("id")
for each rec in aTab.GetSelection
...
end

Если вы хотите получать данные из активных view и theme, тогда:
aView = av.GetActiveDoc
aTheme = aView.GetActiveThemes.Get(0)
aTab = ...

Либо может быть вы хотите подключаться не к слою, а к отдельной table (таблице), название которой вы знаете?
Тогда
aTable = av.FindDoc("Table1")
aVTab = aTable.GetVTab
...

Либо вы хотите получать данные из открытой и активной атрибутивной таблицы, но тогда подходит ваш первый код.

Что конкретно вы хотите сделать? И что именно не работает в примере из help?
    
0 голосов
ответил 26 Янв, 09 от Vcevolod (200 баллов)
Есть вид, в виде около 50 тем. Пользователь выбирает тему и по щелчку запускается скрипт (имя темы и атрибутивной таблицы естественно неизвестны), передающий во внешнию программу идентификатор атрибутивной таблицы, связанной с выбранной темой. В приведенном скрипте из Help (FTab) не работает цикл (не активна атриб. таблица). К сожалению моих скудных знаний по Avenue не хватает.
Спасибо за сообщение.
    
0 голосов
ответил 27 Янв, 09 от BigSerg (4,080 баллов)
тогда ваш вариант

"Если вы хотите получать данные из активных view и theme, тогда:
aView = av.GetActiveDoc
aTheme = aView.GetActiveThemes.Get(0)
aTab = ... " (с) TDenis
0 голосов
ответил 27 Янв, 09 от Vcevolod (200 баллов)
Премного благодарен! Все четко, вопрос закрыт.
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...