Список форумов www.integro.ru www.integro.ru
ЦСИ ИНТЕГРО
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

LayerID

 
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков
Предыдущая тема :: Следующая тема  
Автор Сообщение
Ayrat



Зарегистрирован: 10.09.2012
Сообщения: 11

СообщениеДобавлено: Пн 22 Окт 2012 10:45    Заголовок сообщения: LayerID Ответить с цитатой

Хочу написать скрипт на уровне БД, который автоматически выводит в ранее созданную мною SQL таблицу информацию по удаленным объектом, аналогичные данным из таблицы INGEO_LOGS. Проблема в том, что я не могу получить ID слоя, в котором был объект. Код:

sub dbMapObjects_DeleteComplete(aMapObjectID, aMy)
dim sql,a,b,c,d,e
set a=ActiveDb.SemDbTables.ExecSQL ("select idminor from local_log")
a.movelast
sqll= "INSERT INTO LOCAL_LOG(IDMAJOR,idminor) values(0,"&a.fields(0).value+1 &")"
ActiveDb.SemDbTables.ExecSQL sqll
ActiveDb.SemDbTables.ExecSQL "update local_log set eventtime='"&now&"' where idminor="&a.fields(0).value+1
ActiveDb.SemDbTables.ExecSQL "update local_log set user_id='"&application.activedb.LogonUserID&"' where idminor="&a.fields(0).value+1
set b=ActiveDb.SemDbTables.ExecSQL ("select username from ingeo_users where id='"&application.activedb.LogonUserID&"'")
ActiveDb.SemDbTables.ExecSQL "update local_log set user_name='"&b.fields(0).value&"' where idminor="&a.fields(0).value+1
ActiveDb.SemDbTables.ExecSQL "update local_log set storage=12 where idminor="&a.fields(0).value+1
ActiveDb.SemDbTables.ExecSQL "update local_log set operation=102 where idminor="&a.fields(0).value+1
ActiveDb.SemDbTables.ExecSQL "update local_log set OBJECTID='"&aMapObjectID&"' where idminor="&a.fields(0).value+1
ActiveDb.SemDbTables.ExecSQL "update local_log set details=layerID='"&application. activedb.mapobjects.LayerIDFromObjectID(aMapObjectID)&"' where idminor="&a.fields(0).value+1
end sub

Нужно получить ID слоя, не обращаясь к таблице INGEO_LOGS.
Есть вариант писать ID активного слоя, но дело в том, что объекты могут удаляться программно, не включая слои.
Еще вопрос: как получить USER_IP и USER_ID
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
APopov



Зарегистрирован: 19.06.2006
Сообщения: 347
Откуда: Самара

СообщениеДобавлено: Пн 22 Окт 2012 10:58    Заголовок сообщения: Ответить с цитатой

1) "C:\Program Files\Integro\InGeo\IngeoIntfs.chm"
MapObjects.LayerIDFromObjectID(anObjectID)

2) Юзерский ip знает только сервер ингео и собственно юзер. у сервера ингео нет возможности спросить его. но получить ип машины на которой выполняется скрип можно. гугл в помощь.

3) USER_ID? не этот application.activedb.LogonUserID ? а какой тогда вы имеете ввиду?

4) у вас очень не оптимальный код. количество SQL команд лучше минимизировать

UPD: еще раз перечитал ваш код: оказывается, у вас уже есть получение ИД слоя. тогда не понятно что же в итоге вам нужно.

_________________
ОАО "Самара-Информспутник",
инженер-программист Попов Артем
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Ayrat



Зарегистрирован: 10.09.2012
Сообщения: 11

СообщениеДобавлено: Пн 22 Окт 2012 12:12    Заголовок сообщения: Ответить с цитатой

дело в том, что application. activedb.mapobjects.LayerIDFromObjectID(aMapObjectID) не проходит. программа не может найти этот объект, тк он уже удален.


123.JPG
 Описание:
1
 Размер файла:  135.45 KB
 Просмотрено:  8288 раз(а)

123.JPG


Вернуться к началу
Посмотреть профиль Отправить личное сообщение
APopov



Зарегистрирован: 19.06.2006
Сообщения: 347
Откуда: Самара

СообщениеДобавлено: Вт 23 Окт 2012 10:01    Заголовок сообщения: Ответить с цитатой

понял. тогда используйте событие dbMapObjects_WillDelete вместо dbMapObjects_DeleteComplete.
_________________
ОАО "Самара-Информспутник",
инженер-программист Попов Артем
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Ayrat



Зарегистрирован: 10.09.2012
Сообщения: 11

СообщениеДобавлено: Вт 23 Окт 2012 11:44    Заголовок сообщения: Ответить с цитатой

Спасибо, помогло!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов www.integro.ru -> Вопросы разработчиков Часовой пояс: GMT + 5
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять приложения в этом форуме
Вы можете скачивать файлы в этом форуме


© phpBB Group
Русская поддержка phpBB