| Предыдущая тема :: Следующая тема   | 
	
	
	
		| Автор | 
		Сообщение | 
	
	
		Timur
 
 
  Зарегистрирован: 20.06.2012 Сообщения: 3 Откуда: Уфа
  | 
		
			
				 Добавлено: Ср 20 Июн 2012 14:18    Заголовок сообщения: COMException was unhandled  На найден объект [ | 
				     | 
			 
			
				
  | 
			 
			
				Прошу помощи.  в строке results = .....  возникает данная ошибка. При дебаге LayersObject и results содержат ObjectID постоянно одни и те же.
 
 	  | Код: | 	 		    Dim LayersObject As IIngeoMapObjectsQuery = ingeoApp.ActiveDb.MapObjects.QueryByLayers("0010000017F8")
 
        
 
 
        While (Not LayersObject.EOF)
 
            results = ingeoApp.ActiveDb.MapObjects.QueryByObject("0010000017F8", LayersObject.ObjectID, 1, 1)
 
            'If (results Is Nothing) Then
 
            '    ListBox1.Items.Add(LayersObject.ObjectID)
 
 
            'End If
 
 
            LayersObject.MoveNext()
 
 
 
        End While | 	  
 
 
подробнее об ошибке
 
 	  | Цитата: | 	 		  System.Runtime.InteropServices.COMException was unhandled
 
  ErrorCode=-2147418113
 
  Message=На найден объект [
 
  Source=""
 
  StackTrace:
 
       at Ingeo.IIngeoMapObjects.QueryByObject(Object aLayerIDs, String anObjectID, TIngeoContourRelation aRelationMask, TIngeoContourRelation aRelation)
 
       at streets_1.Form1.FindStreets_Click(Object sender, EventArgs e) in D:\Documents and Settings\User\my documents\visual studio 2010\Projects\streets_1\streets_1\Form1.vb:line 45
 
       at System.Windows.Forms.Control.OnClick(EventArgs e)
 
       at System.Windows.Forms.Button.OnClick(EventArgs e)
 
       at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
 
       at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
 
       at System.Windows.Forms.Control.WndProc(Message& m)
 
       at System.Windows.Forms.ButtonBase.WndProc(Message& m)
 
       at System.Windows.Forms.Button.WndProc(Message& m)
 
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
 
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
 
       at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
 
       at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
 
       at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
 
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
 
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
 
       at System.Windows.Forms.Application.Run(ApplicationContext context)
 
       at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
 
       at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
 
       at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
 
       at streets_1.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:line 81
 
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
 
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
 
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
 
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
 
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
 
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
 
       at System.Threading.ThreadHelper.ThreadStart()
 
  InnerException: 
 
 | 	  [/code] | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		APopov
 
 
  Зарегистрирован: 19.06.2006 Сообщения: 347 Откуда: Самара
  | 
		
			
				 Добавлено: Ср 20 Июн 2012 15:39    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				1) скажите, в чем суть алгоритма?
 
2) как объявлена переменная results?
 
попробуйте отлаживаться в режиме "release" (хоть это и звучить абсурдно) _________________ ОАО "Самара-Информспутник",
 
   инженер-программист Попов Артем
  Последний раз редактировалось: APopov (Чт 21 Июн 2012 17:07), всего редактировалось 1 раз | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		Timur
 
 
  Зарегистрирован: 20.06.2012 Сообщения: 3 Откуда: Уфа
  | 
		
			
				 Добавлено: Ср 20 Июн 2012 15:49    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | APopov писал(а): | 	 		  1) скажите, в чем суть алгоритма?
 
2) как объявлена переменная results?
 
попробуйте отлащиваться в режиме "release" (хоть это и звучить абсурдно) | 	  
 
 
1) поиск объектов которые не пересекаются в заданном слое
 
2)  Dim results As IIngeoMapObjectsQuery | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		APopov
 
 
  Зарегистрирован: 19.06.2006 Сообщения: 347 Откуда: Самара
  | 
		
			
				 Добавлено: Чт 21 Июн 2012 17:15    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				видимо объект пересекает сам себя, просто игнорируйте во втором запросе ИД опорного объекта.
 
я писал только на vbScript, поэтому спрошу :
 
может быть тут обязательно нужно использовать Set:
 
set results = ingeoApp.ActiveDb.MapObjects.QueryByObject...
 
 
и еще замечание, Из документации насчет MapObjects:  	  | Цитата: | 	 		  | Каждое получение ссылки на этот объект начинает новую транзакцию. При последнем освобождении ссылки на этот объект транзакция завершается. Таким образом чтобы какая-либо последовательность действий над объектами происходила внутри одной транзакции, надо ссылку на этот объект сохранить в переменной. Потом через эту ссылку произвести последовательность действий. После чего освободить ссылку.  | 	  
 
рекомендую ingeoApp.ActiveDb.MapObjects запомнить в какуюнить переменную, это ускорит работу. _________________ ОАО "Самара-Информспутник",
 
   инженер-программист Попов Артем | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		andreichernov
 
 
  Зарегистрирован: 14.02.2005 Сообщения: 209 Откуда: Самара
  | 
		
			
				 Добавлено: Чт 21 Июн 2012 17:16    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				попробуйте set в начале напишите 
 
set results = ingeoApp.ActiveDb.MapObjects.QueryByObject("0010000017F8", LayersObject.ObjectID, 1, 1) | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		Timur
 
 
  Зарегистрирован: 20.06.2012 Сообщения: 3 Откуда: Уфа
  | 
		
			
				 Добавлено: Чт 21 Июн 2012 23:22    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				проблема решилась (спасибо тех поддержке)
 
Основной косяк в среде программирования VB.NET express 2010.
 
да и на VBS все работает. | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
		 |