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.

Greetings,

I have a script in VB.Net for grabbing values from one feature and assigning them to another. It works fine on shapefiles, but upon importing the same shapefiles into a file geodatabase, I get an error thrown at me.

    Try
        'Start edit operation
        pEditor.StartOperation()

        'Update the new fields with the correct values
        pFeature.Value(pFeature.Fields.FindField("ReachCode")) = strReach
        pFeature.Value(pFeature.Fields.FindField("Measure")) = dblMeas
        pFCursor.UpdateFeature(pFeature)

        'End edit operation
        pEditor.StopOperation("UpdateFields")

        pFeature = pFCursor.NextFeature

    Catch e As Exception
        'Cancel edits and exit loop
        pEditor.AbortOperation()
        MsgBox("There has been an error... edits will not be saved.", MsgBoxStyle.Exclamation, "Error")
        pEditor.StopEditing(False)
        Exit Sub
    End Try
Loop

The loop is an update cursor for the feature class. When working in the geodatabase, the first update is applied fine, but when it reaches the "pFCursor.UpdateFeature(pFeature)" in the second loop, it throws this error:

"The cursor has been invalidated because the edit operation has stopped"

Is there some syntax change when working in geodatabases with respect to starting and stopping editing operations?

Thanks so much,

DR

share|improve this question
    
did you tried to use a regular cursor and feature.Store() ? –  George May 11 '11 at 17:45
    
Using a COM releaser, search cursor, and feature.store did the trick, thanks George. –  Duncan Rager May 11 '11 at 19:06
add comment

2 Answers 2

up vote 3 down vote accepted

Did you tried to use IFeature.Store instead of ICursor.Update?

share|improve this answer
add comment

Solved, as per George's comment...

    Using ComReleaser As ComReleaser = New ComReleaser
        Dim pFCursor As IFeatureCursor = pFClass.Search(Nothing, False)
        ComReleaser.ManageLifetime(pFCursor)
        Dim pFeature As IFeature = pFCursor.NextFeature

        Do Until pFeature Is Nothing

        ...

            Try
                'Start edit operation
                pEditor.StartOperation()

                'Update the new fields with the correct values
                pFeature.Value(pFeature.Fields.FindField("ReachCode")) = strReach
                pFeature.Value(pFeature.Fields.FindField("Measure")) = dblMeas
                pFeature.Store()

                'End edit operation
                pEditor.StopOperation("UpdateFields")

                pFeature = pFCursor.NextFeature

            Catch e As Exception
                'Cancel edits and exit loop
                pEditor.AbortOperation()
                MsgBox("There has been an error... edits will not be saved.", MsgBoxStyle.Exclamation, "Error")
                pEditor.StopEditing(False)
                Exit Sub
            End Try
        Loop
share|improve this answer
add comment

Your Answer

 
discard

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.