Редактирование таблиц SDE

0 голосов
спросил 19 Ноя, 07 от AlexRush (480 баллов) в категории Программные продукты Esri
Доброго времени суток.
Пишу extension на vb.net, который должен коннектится к ArcGIS Server'у и читать/писать некоторые таблицы SDE
код:

    Public pAGS As ESRI.ArcGIS.Server.IGISServerConnection
    Public pServerContext As IServerContext
    Public pWorkspaceFactory As IWorkspaceFactory
    Public pSdeWs As IWorkspace


        pAGS = New ESRI.ArcGIS.Server.GISServerConnection
        pAGS.Connect("192.168.0.1")

        'создание контекста сервера
        pServerContext = pAGS.ServerObjectManager.CreateServerContext("", "")

        'пакаметры подключения к SDE
        Dim propSet As IPropertySet
        propSet = pServerContext.CreateObject("esrisystem.PropertySet")
        propSet.SetProperty("SERVER", "192.168.0.1")
        propSet.SetProperty("INSTANCE", "5151")
        propSet.SetProperty("DATABASE", "mydata")
        propSet.SetProperty("USER", "sde")
        propSet.SetProperty("PASSWORD", "sde")
        propSet.SetProperty("VERSION", "SDE.DEFAULT")

        'подключение к SDE через контекст сервера       
        pWorkspaceFactory = pServerContext.CreateObject("esriDataSourcesGDB.SdeWorkspaceFactory")
        pSdeWs = pWorkspaceFactory.Open(propSet, 0)

        Dim dsEnum As IEnumDataset
        dsEnum = pSdeWs.Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTTable)

        Dim dsTmp As IDataset
        dsTmp = dsEnum.Next()
     
     Dim table As ITable
     table = dsTmp
     .......     
здесь все работает, подключается, читает из таблицы.
далее была мысль редактировать через CreateRowBuffer, но не знаю, как открыть сессию редактирования
раньше я под VBA редактировал через IEditor, но сейчас я не нахожу его в референсах.

Собственно Вопрос: как редактировать таблицу (чем и как открыть сессию редактирования)?

1 Ответ

0 голосов
ответил 19 Ноя, 07 от AlexRush (480 баллов)
уже сам нашел:

    Public Function StartEditSession(ByRef pSdeWorkspace As IWorkspace) As IWorkspaceEdit
        Dim pWorkspaceEdit As IWorkspaceEdit
        pWorkspaceEdit = pFrmMain_RSView.pSdeWs
        pWorkspaceEdit.StartEditing(True)
        pWorkspaceEdit.StartEditOperation()
        Return pWorkspaceEdit
    End Function

    Public Sub StopEditSession(ByRef pWorkspaceEdit As IWorkspaceEdit)
        pWorkspaceEdit.StopEditOperation()
        pWorkspaceEdit.StopEditing(True)
    End Sub

        Dim pWsE As IWorkspaceEdit
        pWsE = StartEditSession(pSdeWs)

        Dim prb As IRowBuffer
        Dim pq As ICursor
        prb = ptCountry.CreateRowBuffer
        prb.Value(1) = 1
        prb.Value(2) = "lalala"
        pq = ptCountry.Insert(True)
        pq.InsertRow(prb)

        StopEditSession(pWsE)
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...