Не работает IQueryFilter.WhereClause

0 голосов
спросил 20 Ноя, 07 от AlexRush (480 баллов) в категории Программные продукты Esri
на VB.NET пишу Extension, который коннектися к ArcGIS Server'у, затем из под контекста сервера - к SDE и выгребает нужные атрибутивные таблицы. Таблицы работают и данные из них выгребаются. Элементарныя задача - отфильтровать - не работает, т.е. выдает все строки таблицы, как если бы WhereClause была пустой .
код:
        Dim pCurs As ICursor
        Dim qf As IQueryFilter
        Dim pRow As IRow

        qf = New QueryFilter
        qf.WhereClause = "OBJECTID=1"

        pCurs = pTable.Search(qf, True)
        pRow = pCurs.NextRow
        While Not IsNothing(pRow)
            'Вывод значения в грид и т.п.
            pRow = pCurs.NextRow
        End While

пробовал различные варианты имени поля: [OBJECTID] и "OBJECTID", и имеяна полей различных типов, и равно(=) и LIKE; пробовал .Search(qf, True) и .Search(qf, False)
Самое интересное: пробовал qf.WhereClause = "Всякая херня в WhereClause" - ВСЕ РАВНО ВЕДЕТ СЕБЯ КАК ПРИ ПУСТОЙ WhereClause. Этот же код нормально работает в VBA.
Нашел полностью аналогичный вопрос на форруме http://forums.esri.com/Thread.asp?c=93&f=993&t=180228#531244 там тоже ничего путевого не пишут.
Народ, Что мне делать?! (стреляться и вешаться не предлагать).

7 Ответы

0 голосов
ответил 21 Ноя, 07 от Alexander1 (32,520 баллов)
Это ArcGIS Desktop extension, или stand alone application. Если я правильно понимаю, приложение будет работать в локальной сети. Верно?
0 голосов
ответил 21 Ноя, 07 от AlexRush (480 баллов)
ответ уже найден:

    Public Function GetSearchCursor(ByRef SrcTable As ITable, ByVal WhereClause As String) As ICursor
        Dim qf As IQueryFilter = pExtension.pServerContext.CreateObject("esriGeodatabase.QueryFilter")
        Dim recSet As IRecordSet = pExtension.pServerContext.CreateObject("esriGeodatabase.RecordSet")
        Dim recSetInit As IRecordSetInit = recSet
        qf.WhereClause = WhereClause
        qf.SubFields = "*"
        recSetInit.SetSourceTable(SrcTable, qf)
        recSet = recSetInit
        GetSearchCursor = recSet.Cursor(False)
    End Function
0 голосов
ответил 21 Ноя, 07 от Alexander1 (32,520 баллов)
Мой вопрос был относительно общей идеи приложения, а не частной проблемы с QueryFilter.
0 голосов
ответил 21 Ноя, 07 от AlexRush (480 баллов)
относительно общей идеи приложения:
на VB.NET пишу Extension, ...
если я чего-то неясно изложил, поправляйте.
    
0 голосов
ответил 21 Ноя, 07 от Alexander1 (32,520 баллов)
Удачи Вам в этом славном начинании.
0 голосов
ответил 22 Ноя, 07 от AlexRush (480 баллов)
    Спасибо. Только относительно его славности берут сомнения...
0 голосов
ответил 22 Ноя, 07 от Alexander1 (32,520 баллов)
Я, собственно, чего и спрашивал... image
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...