Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I would like to edit a selected feature/record via ArcMap vba, but I'm not having much luck with this code sample (see code below). I'm not getting an error, but the record selected is not updating.

Private Sub Update_Click()

Dim pMxDoc As IMxDocument

Dim pLayer As ILayer

Dim pInFtrLyr As IFeatureLayer

Dim pFtrSel As IFeatureSelection

Dim pFeatureClass As IFeatureClass

Dim pFields As IFields

'Dim ii As Integer

Dim pPoint As IPoint

'Dim pSegColl As ISegmentCollection

Dim pEnumLayer As IEnumLayer

Dim pMap As IMap

Set pMxDoc = ThisDocument

Set pMap = pMxDoc.FocusMap

Set pEnumLayer = pMap.Layers


Set pLayer = pEnumLayer.Next

Do Until pLayer Is Nothing

If pLayer.Name = "Copy of Wells_test" Then

Set pInFtrLyr = pLayer

End If

Set pLayer = pEnumLayer.Next

Loop


Set pFtrSel = pInFtrLyr


If pFtrSel.SelectionSet.Count = 0 Then

MsgBox "Please select one Well record", vbOKOnly

Exit Sub

ElseIf pFtrSel.SelectionSet.Count > 1 Then

MsgBox "Please select one Well record", vbOKOnly

Exit Sub

Else

If pFtrSel.SelectionSet.Count = 1 Then

Set pPoint = pInFtrLyr.FeatureClass.GetFeature(pFtrSel.Selectio nSet.IDs.Next).Shape

End If

End If


Set pFeatureClass = pInFtrLyr.FeatureClass


Dim pFSelection As IFeatureSelection

Set pFSelection = pInFtrLyr


Dim pFClass As IFeatureClass

Set pFClass = pInFtrLyr.FeatureClass


Dim pFCursor As IFeatureCursor

Set pFCursor = pFClass.Update(Nothing, True)


Dim pID As New esriSystem.UID

pID.value = "esriEditor.Editor"

Dim pEditor As IEditor

Set pEditor = Application.FindExtensionByCLSID(pID)

Dim pFeature As esriGeoDatabase.IFeature

Dim pEnumFeature As esriGeoDatabase.IEnumFeature

Set pEnumFeature = pEditor.EditSelection

Set pFeature = pEnumFeature.Next

Do Until pFeature Is Nothing

pFeature.value(pFeature.Fields.FindField("Type")) = "update"

Set pFeature = pEnumFeature.Next

Loop


End Sub

Thank you for your help.

share|improve this question

2 Answers 2

Try calling Store.

pFeature.value(pFeature.Fields.FindField("Type")) = "update"
pFeature.Store()
Set pFeature = pEnumFeature.Next

Are you in an edit session? Scroll down to best practices: http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#/d/00010000010s000000.htm

share|improve this answer

Yes that worked! Here is the updated code.

Private Sub Update_Click()

Dim pFeatureClass As IFeatureClass

Dim pFeatureLayer As IFeatureLayer

Dim pDoc As IMxDocument

Dim pMap As IMap

Set pDoc = ThisDocument

Dim pActiveView As IActiveView

Set pMap = pDoc.ActiveView.FocusMap

Dim pLayer As ILayer

Dim pEditor As IEditor

Dim pEnumFeature As IEnumFeature

Dim pEnumLayer As IEnumLayer

Dim pGeometry As IGeometry

Dim pID As New UID

Dim pFields As IFields

Dim pField As IField

Dim pFeature As IFeature

Dim pFeatureSelection As IFeatureSelection

Set pMap = pDoc.FocusMap

Set pEnumLayer = pMap.Layers


   Set pLayer = pEnumLayer.Next

    Do Until pLayer Is Nothing

      If pLayer.Name = "Copy of Wells_test" Then

        Set pFeatureLayer = pLayer

         End If

         Set pLayer = pEnumLayer.Next

    Loop


Set pFeatureSelection = pFeatureLayer

Set pFeatureClass = pFeatureLayer.FeatureClass




Set pFeatureClass = pFeatureLayer.FeatureClass

Set pFields = pFeatureClass.Fields

Dim strexpression As String

Dim pSelSet As ISelectionSet

 Set pSelSet = pFeatureSelection.SelectionSet

'select feature

 Dim pFCursor As IFeatureCursor

 pSelSet.Search Nothing, False, pFCursor

 Set pFeature = pFCursor.NextFeature

'Loop through the features using the cursor

strexpression = InputBox("Update Type Field")

Do While Not pFeature Is Nothing


pFeature.value(pFeature.Fields.FindField("Type")) = strexpression

pFeature.Store

Set pFeature = pFCursor.NextFeature

Loop


End Sub
share|improve this answer
2  
Do not post replies as separate answers but make a comment instead. Also do not forget to mark Jay's answer as accepted. –  Petr Krebs Jan 4 '11 at 14:15

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.