4 votos

¿Se puede editar una tabla SDE mediante ArcObjects cuando no se agrega a ArcMap?

Tengo una tabla que está en SDE, lo que quiero hacer es en mi formulario de usuario, haga clic en el botón "Guardar" y la tabla se editará aunque no esté dentro del documento del mapa. es posible? He intentado con el siguiente código, que se ejecuta, pero no sucede nada en la tabla (también he agregado la tabla al documento del mapa y todavía no ocurre nada o no se producen mensajes de error). Aquí es que tengo código.

 Private Sub cmdSaveDev_Click()

Dim pTable As ITable
Dim pCursor As ICursor
Dim pRow As IRow
Dim pRowBuffer As IRowBuffer

Dim pPropset As IPropertySet
Set pPropset = New PropertySet
    With pPropset
        .SetProperty "Server", "***"
        .SetProperty "Instance", "***"
        .SetProperty "User", "***"
        .SetProperty "Password", "***"
        .SetProperty "Version", "SDE.DEFAULT"
    End With


Dim pSdeWS As IWorkspace

Dim pSdeWF As IWorkspaceFactory
Set pSdeWF = New SdeWorkspaceFactory

Dim pSdeFeatWS As IFeatureWorkspace
Set pSdeFeatWS = pSdeWF.Open(pPropset, 0)

Set pSdeWS = pSdeFeatWS

Dim pWkspEdit As IWorkspaceEdit
Set pWkspEdit = pSdeFeatWS

Set pTable = pSdeFeatWS.OpenTable("SY_CSY_TERRIER.DEVELOPMENT_DEVELOPER")

Dim i As Integer

If lstSelectedDevelopers.ListCount = 0 Then
    MsgBox "Add a developer to the Selected Developer box and try again"
Else

    pWkspEdit.StartEditing (True)
    pWkspEdit.StartEditOperation

    Set pRowBuffer = pTable.CreateRowBuffer
    Set pCursor = pTable.Insert(True)
    For i = 0 To lstSelectedDevelopers.ListCount - 1
        Set pRow = pRowBuffer
        pRow.value(1) = frmCityDev.txtRecordNo
        pRow.value(2) = lstSelectedDevelopers.List(i)

        pCursor.Flush
    Next i

    pWkspEdit.StopEditing (True)
    pWkspEdit.StopEditOperation

End Sub
 

¡Gracias!

7voto

FlySwat Puntos 61945

Sí, puede, pero tiene cosas fuera de servicio y le falta un paso importante

Este debe ser su orden:

  startediting
 starteditoperation
 get insert cursor
 create rowbuffer
 do your edits
 insertcursor.insertrow(buffer) <---- missing
 stopeditoperation
 stopediting(save)
 

Es posible que desee ver este ejemplo

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X