| Предыдущая тема :: Следующая тема   | 
	
	
	
		| Автор | 
		Сообщение | 
	
	
		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) не проходит. программа не может найти этот объект, тк он уже удален.
	
  
	 
	
	
		
	 
	
		|  Описание: | 
		
			
		 | 
	 
	
		|  Размер файла: | 
		 135.45 KB | 
	 
	
		|  Просмотрено: | 
		 9242 раз(а) | 
	 
	
		
  
 
  | 
	 
	 
	 
 | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		APopov
 
 
  Зарегистрирован: 19.06.2006 Сообщения: 347 Откуда: Самара
  | 
		
			
				 Добавлено: Вт 23 Окт 2012 10:01    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				понял. тогда используйте событие dbMapObjects_WillDelete вместо dbMapObjects_DeleteComplete.
 _________________ ОАО "Самара-Информспутник",
 
   инженер-программист Попов Артем | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		Ayrat
 
 
  Зарегистрирован: 10.09.2012 Сообщения: 11
 
  | 
		
			
				 Добавлено: Вт 23 Окт 2012 11:44    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				| Спасибо, помогло!
 | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		 |