Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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 все работает. |
|
Вернуться к началу |
|
 |
|