<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: .Net Update Cursors SDE Editing and Updating Editor in ArcObjects SDK Questions</title>
    <link>https://community.esri.com/t5/arcobjects-sdk-questions/net-update-cursors-sde-editing-and-updating-editor/m-p/36881#M947</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;A few observations in my testing of a new set of routines based on the help I found.&amp;nbsp; The help encourages the use of the Editor interfaces (IEditor, IEditor2 or IEditor3) for managing edit sessions rather than the Geodatabase interfaces (IWorkspaceEdit and IMultiuserWorkspaceEdit).&amp;nbsp; This appears to relate to the locking behavior I mentioned in my second question and to my third question about refreshing the Desktop editing tools like the Sketch Properties window.&amp;nbsp; The Editor interfaces are the only ones that affect what the user sees in Desktop.&amp;nbsp; The Geodatabases interfaces do not.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So if I use the Editor interfaces to start an edit session and an edit operation the Desktop responds by enabling the Editor menu and blanks out the Sketch Properties window.&amp;nbsp; When the edit operation complete it does not leave a lock that prevents user actions with editor in Desktop.&amp;nbsp; The operation can also be undone by the user through the normal undo interface if the edit session is left active and the edits are not saved.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;But if I use the Geodatabase interfaces the Desktop does not respond at all and any failure to complete the edit session with that interface when the user had not started an edit session will interfere with the user trying to start an edit session in Desktop if the program edit session did not complete.&amp;nbsp; There also is no way for the user to undo the operation through the normal Desktop interface and only the program can manange any undo.&amp;nbsp; So to the extent that the Geodatabase interfaces are used the edit session those interfaces manage has to be completely self contained and must complete all operations and edit sessions begun by those interfaces in the code.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It appears to me that the Geodatabase interfaces are better suited to ArcCatalog operations rather than Desktop operations, given that these interfaces interfere with the Desktop edit session but do not give the user access through the normal interfaces to resolve any conflicts the program may have created and failed to resolve.&amp;nbsp; In Desktop the Geodatabase interfaces can be used to test for certain edit states that are not available with the Editor interfaces, but only the Editor interfaces should be used to actually start or stop the editor or the edit operations in Desktop code.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 16 Nov 2011 15:25:54 GMT</pubDate>
    <dc:creator>RichardFairhurst</dc:creator>
    <dc:date>2011-11-16T15:25:54Z</dc:date>
    <item>
      <title>.Net Update Cursors SDE Editing and Updating Editor</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/net-update-cursors-sde-editing-and-updating-editor/m-p/36879#M945</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Three questions:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;1) I am trying to create an add-in for distribution that edits features both inside and outside of an edit session while Desktop is open.&amp;nbsp; If I was designing this just for my own use I would know the way the add-in behaved and would generally know not to try to edit a workspace I do not have write access to, but I do not want to assume that about my users.&amp;nbsp; What is the best way to test that a workspace can be edited by a user?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;2) SDE seems to always need an Edit session started for any of the editing code I have ever gotten to work, but geoprocessing tools work on SDE data without an edit session being started by the user.&amp;nbsp; I have tried using the IWorkSpaceEdit to determine if an edit session already exists and if it does not I begin an edit session in the code and wrap the actual edits in a StartOperation and StopOperation pair.&amp;nbsp; I do not seem to see this behavior with non-SDE feature classes (which do not use a edit session and just update the feature directly).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Below is my code.&amp;nbsp; It completes fine, but the Editor in ArcMap does not actually start an Edit session and if after it completes I try to manually start an Edit Session on an affected SDE feature class it says it is not editable until I click on the map somewhere.&amp;nbsp; So it seems that somehow I am not releasing the lock on the feature class.&amp;nbsp; I am using an Update cursor, which I know does not fire events like the store method on a search cursor, and I notice that I cannot flush the cursor within the Edit Operation without triggering an error.&amp;nbsp; But I would like to use the Update Cursor for speed.&amp;nbsp; Any ideas on what I can do to get the edits to complete in a way that allows the user to begin an edit session?&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Assume I have a valid Feature Class assigned to the pFC variable
&amp;nbsp;&amp;nbsp; Try
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pFCursor As ESRI.ArcGIS.Geodatabase.IFeatureCursor = Nothing
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pFCursor = pFC.Update(Nothing, False) ' Create an UpdateCursor on FeatureClass
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pFeat As ESRI.ArcGIS.Geodatabase.IFeature
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pFeat = pFCursor.NextFeature ' Get First Feature
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If pFeat Is Nothing Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MsgBox("No Route Features Selected!")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pDataset As ESRI.ArcGIS.Geodatabase.IDataset = pFC
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim IsVersion As Boolean = False
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If TypeOf pDataset Is ESRI.ArcGIS.Geodatabase.IVersionedObject Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IsVersion = True
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim workspace As ESRI.ArcGIS.Geodatabase.IWorkspace = pDataset.Workspace
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' use IWorkspaceEdit
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pWorkspaceEdit As ESRI.ArcGIS.Geodatabase.IWorkspaceEdit = workspace


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If IsVersion Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Not pWorkspaceEdit.IsBeingEdited Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pWorkspaceEdit.StartEditing(True)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Not pWorkspaceEdit.IsBeingEdited Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MsgBox("Cannot start editing SDE Workspace")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pWorkspaceEdit.StartEditOperation()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pWorkspaceEdit.StartEditOperation()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim i as Long = 0 ' Initialize a feature counter

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Do While Not pFeat Is Nothing

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' do some kind of edit of the feature here

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pFCursor.UpdateFeature(pFeat) ' Update the cursor
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pFeat = pFCursor.NextFeature
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i = i + 1 ' Counter for features processed
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If i Mod 1000 = 0 Then ' flush edits after every 1,000 features
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Not IsVersion Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pFCursor.Flush()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Loop

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Not IsVersion Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pFCursor.Flush() ' Final Flush of edits
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pWorkspaceEdit.StopEditOperation()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp; Catch ex As Exception
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MsgBox(ex.ToString)
&amp;nbsp;&amp;nbsp; End Try
&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;3)&amp;nbsp; If an Edit session is started on the workspace, I want to be able to update the Editor dialogs, such as the feature coordinate dialog that can be accessed when a single feature is selected and its vertices are being edited.&amp;nbsp; I know that the Update cursor won't do this as it is processing the&amp;nbsp; features.&amp;nbsp; Is there a way to get the Editor to see the updates when the edits are finished?&amp;nbsp; Do I have to use a SearchCursor and the feature's store method to make that happen?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for any help.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 10 Nov 2011 18:14:26 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/net-update-cursors-sde-editing-and-updating-editor/m-p/36879#M945</guid>
      <dc:creator>RichardFairhurst</dc:creator>
      <dc:date>2011-11-10T18:14:26Z</dc:date>
    </item>
    <item>
      <title>Re: .Net Update Cursors SDE Editing and Updating Editor</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/net-update-cursors-sde-editing-and-updating-editor/m-p/36880#M946</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;After searching the forums a little more I came across a few help topics that seem to deal with many of my questions.&amp;nbsp; The most useful topics are &lt;/SPAN&gt;&lt;A href="http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#/d/00010000010s000000.htm"&gt;Editing with the geodatabase API&lt;/A&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;A href="http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#/Updating_features/0001000002rs000000/"&gt;Updating Features&lt;/A&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;A href="http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#/Managing_edit_sessions_and_edit_operations/000100000340000000/"&gt;Managing edit sessions and edit operations&lt;/A&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;A href="http://help.arcgis.com/en/sdk/10.0/arcobjects_net/componenthelp/index.html#/d/002500000m5v000000.htm"&gt;IWorkspaceEdit Interface&lt;/A&gt;&lt;SPAN&gt; and &lt;/SPAN&gt;&lt;A href="http://help.arcgis.com/en/sdk/10.0/arcobjects_net/componenthelp/index.html#//0025000004sp000000"&gt;IMultiuserWorkspaceEdit Interface&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It looks like I will need to revise my code substantially to properly implement the recommended practices for editing with ArcObjects.&amp;nbsp; If I come up with a good workflow for properly checking the current state of the Editor relative to the layer I want to edit, determining appropriate editing options for a layer based on its data type, selecting the best method that enhances performance without compromising data, etc... I will post it here.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 14 Nov 2011 18:33:45 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/net-update-cursors-sde-editing-and-updating-editor/m-p/36880#M946</guid>
      <dc:creator>RichardFairhurst</dc:creator>
      <dc:date>2011-11-14T18:33:45Z</dc:date>
    </item>
    <item>
      <title>Re: .Net Update Cursors SDE Editing and Updating Editor</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/net-update-cursors-sde-editing-and-updating-editor/m-p/36881#M947</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;A few observations in my testing of a new set of routines based on the help I found.&amp;nbsp; The help encourages the use of the Editor interfaces (IEditor, IEditor2 or IEditor3) for managing edit sessions rather than the Geodatabase interfaces (IWorkspaceEdit and IMultiuserWorkspaceEdit).&amp;nbsp; This appears to relate to the locking behavior I mentioned in my second question and to my third question about refreshing the Desktop editing tools like the Sketch Properties window.&amp;nbsp; The Editor interfaces are the only ones that affect what the user sees in Desktop.&amp;nbsp; The Geodatabases interfaces do not.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So if I use the Editor interfaces to start an edit session and an edit operation the Desktop responds by enabling the Editor menu and blanks out the Sketch Properties window.&amp;nbsp; When the edit operation complete it does not leave a lock that prevents user actions with editor in Desktop.&amp;nbsp; The operation can also be undone by the user through the normal undo interface if the edit session is left active and the edits are not saved.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;But if I use the Geodatabase interfaces the Desktop does not respond at all and any failure to complete the edit session with that interface when the user had not started an edit session will interfere with the user trying to start an edit session in Desktop if the program edit session did not complete.&amp;nbsp; There also is no way for the user to undo the operation through the normal Desktop interface and only the program can manange any undo.&amp;nbsp; So to the extent that the Geodatabase interfaces are used the edit session those interfaces manage has to be completely self contained and must complete all operations and edit sessions begun by those interfaces in the code.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It appears to me that the Geodatabase interfaces are better suited to ArcCatalog operations rather than Desktop operations, given that these interfaces interfere with the Desktop edit session but do not give the user access through the normal interfaces to resolve any conflicts the program may have created and failed to resolve.&amp;nbsp; In Desktop the Geodatabase interfaces can be used to test for certain edit states that are not available with the Editor interfaces, but only the Editor interfaces should be used to actually start or stop the editor or the edit operations in Desktop code.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 16 Nov 2011 15:25:54 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/net-update-cursors-sde-editing-and-updating-editor/m-p/36881#M947</guid>
      <dc:creator>RichardFairhurst</dc:creator>
      <dc:date>2011-11-16T15:25:54Z</dc:date>
    </item>
    <item>
      <title>Re: .Net Update Cursors SDE Editing and Updating Editor</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/net-update-cursors-sde-editing-and-updating-editor/m-p/36882#M948</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;On my first topic I have found several interfaces that need to be checked to determine if an Edit Session can be safely started on SDE data.&amp;nbsp; When dealing with SDE, you need to check if the feature class can be updated, deleted or inserted.&amp;nbsp; For that you can use the ISQLPrivilege interface:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim workspace As ESRI.ArcGIS.Geodatabase.IWorkspace = pDataset.Workspace ' Assume pDataset is assigned a Dataset&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If workspace.Type = esriWorkspaceType.esriRemoteDatabaseWorkspace Then&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pFCName As IFeatureClassName = pDataset.FullName&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pSQLPriv As ISQLPrivilege = pFCName&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If pSQLPriv.SQLPrivileges And esriSQLPrivilege.esriUpdatePrivilege &amp;lt;&amp;gt; esriSQLPrivilege.esriUpdatePrivilege Then ' Bitwise check for Update Privileges&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MsgBox("You do not have priveleges to update this feature class!")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The Bitwise check can combine multiple states.&amp;nbsp; For example to see if all edit priveleges are granted use:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If pSQLPriv.SQLPrivileges And (esriSQLPrivilege.esriUpdatePrivilege Or esriSQLPrivilege.esriDeletePrivilege Or esriSQLPrivilege.esriInsertPrivilege) &amp;lt;&amp;gt; (esriSQLPrivilege.esriUpdatePrivilege Or esriSQLPrivilege.esriDeletePrivilege Or esriSQLPrivilege.esriInsertPrivilege) Then ' Bitwise check for All Edit Privileges&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Assuming the user has the approrpiate edit privileges you also need to check the current state of the Editor Options setting to permit versioned and non-versioned editing and compare it to the version status of the Dataset you want to edit.&amp;nbsp; The IEditProperties3 interface tells whether the Editor Options are set to allow versioned or non-versioned editing while the IVersionedObject3 can determine if an SDE dataset object is versioned or non-versioned.&amp;nbsp; The settings of the Editor and the Feature Class target must match to allow the Editor to be started: &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Dim pVO3 As IVersionedObject3 = pDataset ' Assume a valid SDE Dataset is assigned to this variable&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Dim pEP3 As IEditProperties3 = m_Editor ' assumes this variable is assigned with an instance of IEditor&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Dim MESM As esriMultiuserEditSessionMode = pEP3.MultiuserEditSessionMode&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;If MESM = esriMultiuserEditSessionMode.esriMESMVersioned And Not pVO3.IsRegisteredAsVersioned Then&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;' Do something when the Edit Mode in set to versioned editing but the Dataset is non-versioned&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;ElseIf MESM = esriMultiuserEditSessionMode.esriMESMNonVersioned And pVO3.IsRegisteredAsVersioned Then&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;' Do something when the Edit Mode in set to non-versioned editing but the Dataset is versioned&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;End If&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The MultiuserEditSessionMode setting can used to notify the user that there is a mismatch or it can actually change the Editor Option setting to match the dataset.&amp;nbsp; If the Editor Option is changed it should be reset back before the user can regain control or else the user should be allowed to determine if the tool should proceed and be notified of the change, since if the code does not change the setting back if will affect the user's ability to start or stop an edit session on versioned or non-versioned data.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I hope this helps someone.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 17 Nov 2011 17:02:46 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/net-update-cursors-sde-editing-and-updating-editor/m-p/36882#M948</guid>
      <dc:creator>RichardFairhurst</dc:creator>
      <dc:date>2011-11-17T17:02:46Z</dc:date>
    </item>
    <item>
      <title>Re: .Net Update Cursors SDE Editing and Updating Editor</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/net-update-cursors-sde-editing-and-updating-editor/m-p/36883#M949</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Here is another part of the answer to my first question.&amp;nbsp; To test workspaces if they are Read Only or if they can be edited use the IWorkspaceProperties and IWorkspaceProperty interfaces.&amp;nbsp; Below is a code sample of how to use these interfaces:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Assume workspace is a variable containing a valid IWorkspace instance from a Layer.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim workspaceProperties As IWorkspaceProperties = TryCast(workspace, IWorkspaceProperties)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If workspaceProperties Is Nothing Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Throw New ArgumentException("Workspace does not implement IWorkspaceProperties.")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim workspaceProperty As IWorkspaceProperty = workspaceProperties.Property _
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (esriWorkspacePropertyGroupType.esriWorkspacePropertyGroup, _
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CInt(esriWorkspacePropertyType.esriWorkspacePropIsReadonly))

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' See if the property is supported.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If workspaceProperty.IsSupported Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Get the property value.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim bReadOnly As Boolean = CType(workspaceProperty.PropertyValue, Boolean)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If bReadOnly Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MsgBox("The Workspace of this Layer is Read Only!" &amp;amp; vbCrLf &amp;amp; "You Cannot Edit This Layer!", MsgBoxStyle.Exclamation, "Read Only Workspace!")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; workspaceProperty = Nothing
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; workspaceProperties = Nothing
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; workspace = Nothing
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit Sub
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; workspaceProperty = workspaceProperties.Property _
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (esriWorkspacePropertyGroupType.esriWorkspacePropertyGroup, _
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CInt(esriWorkspacePropertyType.esriWorkspacePropCanEdit))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If workspaceProperty.IsSupported Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Get the property value.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim bCanEdit As Boolean = CType(workspaceProperty.PropertyValue, Boolean)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Not bCanEdit Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MsgBox("The Workspace of this Layer Cannot be Edited!" &amp;amp; vbCrLf &amp;amp; "You Cannot Edit This Layer!", MsgBoxStyle.Exclamation, "Cannot Edit Workspace!")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; workspaceProperty = Nothing
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; workspaceProperties = Nothing
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; workspace = Nothing
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit Sub
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Dec 2021 21:25:10 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/net-update-cursors-sde-editing-and-updating-editor/m-p/36883#M949</guid>
      <dc:creator>RichardFairhurst</dc:creator>
      <dc:date>2021-12-10T21:25:10Z</dc:date>
    </item>
    <item>
      <title>Re: .Net Update Cursors SDE Editing and Updating Editor</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/net-update-cursors-sde-editing-and-updating-editor/m-p/36884#M950</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Unfortunately my last post did not work as I expected.&amp;nbsp; I tried it out on feature class in a network directory where I was not granted write permissions, just read, read and execute, and list directory permissions.&amp;nbsp; The code above returned that the workspace was not Read Only and that it Can Be Edited.&amp;nbsp; However, when it tried to start an edit session it threw an error as I expected.&amp;nbsp; I also looked at .Net code to directly check the directory permissions, but it is reporting the same thing.&amp;nbsp; But the attempt to start the editor in ArcMap manually brings up a report that the layer cannot be edited prior to starting the edit session.&amp;nbsp; So somehow the programmers for ArcMap have figured out what the real settings are, I just have not figured out what interfaces and methods they are using.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have an incident open with Esri to try to get some help.&amp;nbsp; Any ideas from anyone who has done this out there?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 18 Nov 2011 01:41:58 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/net-update-cursors-sde-editing-and-updating-editor/m-p/36884#M950</guid>
      <dc:creator>RichardFairhurst</dc:creator>
      <dc:date>2011-11-18T01:41:58Z</dc:date>
    </item>
    <item>
      <title>Re: .Net Update Cursors SDE Editing and Updating Editor</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/net-update-cursors-sde-editing-and-updating-editor/m-p/36885#M951</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I was able to create the function I needed.&amp;nbsp; For non-SDE workspaces it tests the effective permission of the currentuser to see if they have security policy permissions to write to a directory workspace.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The other code for non-SDE workspaces I posted above that tests the read only and can edit properties also should be used, but that code only tests if the read only setting was applied directly to the individual file or directory.&amp;nbsp; That setting would prevent even the owner with full rights over the file or directory from being able to write to it without unchecking the flag.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The function below incorporates all of the tests I have mentioned and should work with any IDataset variable, whether it is assigned, unassigned. SDE or non-SDE.&amp;nbsp; If it is SDE it checks if it has Edit priveleges.&amp;nbsp; If it is non-SDE it checks user security policies which are applied based on the user identity and not uniformly to the file or directory.&amp;nbsp; It also checks the workspace rights mode settings of the file or directory itself as shown before.&amp;nbsp; I had to comment out the Threading interfaces and methods for checking the CurrentPrincipal because they threw errors, but I would have applied them if I could.&amp;nbsp; If anyone knows how to get them to work in an Add-in, please let me know.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Even if this code indicates that you can write to a dataset, you should still enclose any use of the Editor interface within a Try Catch block, since the file system is dynamic.&amp;nbsp; You should assume that it is possible for settings to change during your process in ways that may cause a failure based on the inability to write to the dataset even after this test is passed, but normally this test should be a good indicator that the dataset can be written to immediately after the test passes.&amp;nbsp; For SDE data you also still need to test if the Editor Option property for versioned/unversioned editing under IEditProperties3 matches the dataset's versioned state.&amp;nbsp; You also need to make sure that no edit session is already in progress before attempting to begin a new edit session using the IEditor interface.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;nbsp; Public Function CanWriteTo(ByVal pDataset As IDataset) As Boolean
&amp;nbsp;&amp;nbsp;&amp;nbsp; If Not pDataset Is Nothing Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Dataset is valid
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim workspace As ESRI.ArcGIS.Geodatabase.IWorkspace = pDataset.Workspace
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Not workspace Is Nothing Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Workspace is valid
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If workspace.Type = esriWorkspaceType.esriRemoteDatabaseWorkspace Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' workspace is an SDE Worksapce.

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Verify editing privileges have been granted for the SDE data
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pFCName As IFeatureClassName = pDataset.FullName
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pSQLPriv As ISQLPrivilege = pFCName
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (pSQLPriv.SQLPrivileges And (esriSQLPrivilege.esriSelectPrivilege Or esriSQLPrivilege.esriUpdatePrivilege Or esriSQLPrivilege.esriInsertPrivilege Or esriSQLPrivilege.esriDeletePrivilege)) = (esriSQLPrivilege.esriSelectPrivilege Or esriSQLPrivilege.esriUpdatePrivilege Or esriSQLPrivilege.esriInsertPrivilege Or esriSQLPrivilege.esriDeletePrivilege) Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pSQLPriv = Nothing
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pFCName = Nothing
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; workspace = Nothing
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return True
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' workspace is Not an SDE Workspace
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim DirectoryPath As String = workspace.PathName
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim dirInfo As System.IO.DirectoryInfo = FileIO.FileSystem.GetDirectoryInfo(DirectoryPath)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim currentUser As System.Security.Principal.WindowsIdentity = System.Security.Principal.WindowsIdentity.GetCurrent()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Dim currentPrinciple As System.Security.Principal.WindowsPrincipal = System.Threading.Thread.CurrentPrincipal
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim acl As System.Security.AccessControl.AuthorizationRuleCollection = dirInfo.GetAccessControl().GetAccessRules(True, True, GetType(System.Security.Principal.SecurityIdentifier))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim currentRule As System.Security.AccessControl.FileSystemAccessRule
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim bDenyWrite As Boolean = False
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim bAllowWrite As Boolean = False
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For x As Integer = 0 To acl.Count - 1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentRule = acl(x)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If currentUser.User.Equals(currentRule.IdentityReference) Then ' Or currentPrinciple.IsInRole(currentRule.IdentityReference) Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If currentRule.AccessControlType.Equals(Security.AccessControl.AccessControlType.Deny) Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (currentRule.FileSystemRights And Security.AccessControl.FileSystemRights.Write) = Security.AccessControl.FileSystemRights.Write Then bDenyWrite = True
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If (currentRule.FileSystemRights And Security.AccessControl.FileSystemRights.Read) = Security.AccessControl.FileSystemRights.Read Then bDenyWrite = True
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ElseIf (currentRule.FileSystemRights And (Security.AccessControl.FileSystemRights.Read Or Security.AccessControl.FileSystemRights.Write)) = (Security.AccessControl.FileSystemRights.Read Or Security.AccessControl.FileSystemRights.Write) Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bAllowWrite = True
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim workspaceProperties As IWorkspaceProperties = TryCast(workspace, IWorkspaceProperties)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If workspaceProperties Is Nothing Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Throw New ArgumentException("Workspace does not implement IWorkspaceProperties.")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim workspaceProperty As IWorkspaceProperty = workspaceProperties.Property _
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (esriWorkspacePropertyGroupType.esriWorkspacePropertyGroup, _
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CInt(esriWorkspacePropertyType.esriWorkspacePropIsReadonly))

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' See if the property is supported.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim bReadOnly As Boolean = False
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If workspaceProperty.IsSupported Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Get the property value.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bReadOnly = CType(workspaceProperty.PropertyValue, Boolean)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; workspaceProperty = workspaceProperties.Property _
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (esriWorkspacePropertyGroupType.esriWorkspacePropertyGroup, _
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CInt(esriWorkspacePropertyType.esriWorkspacePropCanEdit))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim bCanEdit As Boolean = False
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If workspaceProperty.IsSupported Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Get the property value.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bCanEdit = CType(workspaceProperty.PropertyValue, Boolean)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; workspaceProperty = Nothing
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; workspaceProperties = Nothing
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentRule = Nothing
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; currentUser = Nothing
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dirInfo = Nothing
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; workspace = Nothing

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If bAllowWrite And Not (bDenyWrite) And Not (bReadOnly) And bCanEdit Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return True
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp; Return False
&amp;nbsp; End Function&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The function can be called using the code below:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim bCanWrite As Boolean = CanWriteTo(pDataset) ' Assume pDataset is an IDataset variable.&amp;nbsp; It may be assigned or unassigned, SDE or non-SDE.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Not bCanWrite Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MsgBox("The Workspace Does Now Allow Write Access!", MsgBoxStyle.Exclamation, "No Write Access To Workspace!")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit Sub ' one possible action for handling the inability to write to the dataset
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Not pDataset Is Nothing Then 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim workspace As ESRI.ArcGIS.Geodatabase.IWorkspace = pDataset.Workspaceaset
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Not workspace Is Nothing Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If workspace.Type = esriWorkspaceType.esriRemoteDatabaseWorkspace Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pVO3 As IVersionedObject3 = pDataset
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pEP3 As IEditProperties3 = m_Editor ' assumes this variable is already assigned with an instance of IEditor
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim MESM As esriMultiuserEditSessionMode = pEP3.MultiuserEditSessionMode
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If MESM = esriMultiuserEditSessionMode.esriMESMVersioned And Not pVO3.IsRegisteredAsVersioned Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Do something when the Edit Mode in set to versioned editing but the Dataset is non-versioned
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ElseIf MESM = esriMultiuserEditSessionMode.esriMESMNonVersioned And pVO3.IsRegisteredAsVersioned Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Do something when the Edit Mode in set to non-versioned editing but the Dataset is versioned
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' If IEditor is not already editing you may begin an IEditor edit session here if all the tests above passed and you resolved any mismatch in version edit mode
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' You should still use a Try Catch block around your edit session.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Dec 2021 21:25:12 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/net-update-cursors-sde-editing-and-updating-editor/m-p/36885#M951</guid>
      <dc:creator>RichardFairhurst</dc:creator>
      <dc:date>2021-12-10T21:25:12Z</dc:date>
    </item>
    <item>
      <title>Re: .Net Update Cursors SDE Editing and Updating Editor</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/net-update-cursors-sde-editing-and-updating-editor/m-p/36886#M952</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I found that the Bitwise check for SDE priveleges example I gave above needs to be fully enclosed in parentheses to work correctly.&amp;nbsp; So the correct syntax to check for all priveleges is:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;If (pSQLPriv.SQLPrivileges And (esriSQLPrivilege.esriSelectPrivilege Or esriSQLPrivilege.esriUpdatePrivilege Or esriSQLPrivilege.esriDeletePrivilege Or esriSQLPrivilege.esriInsertPrivilege)) &amp;lt;&amp;gt; (esriSQLPrivilege.esriSelectPrivilege Or esriSQLPrivilege.esriUpdatePrivilege Or esriSQLPrivilege.esriDeletePrivilege Or esriSQLPrivilege.esriInsertPrivilege) Then ' Bitwise check for All Privileges&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; ' Do something if user has all priveleges&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;End if&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The code in the post just above this uses this syntax.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 19 Nov 2011 21:09:55 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/net-update-cursors-sde-editing-and-updating-editor/m-p/36886#M952</guid>
      <dc:creator>RichardFairhurst</dc:creator>
      <dc:date>2011-11-19T21:09:55Z</dc:date>
    </item>
  </channel>
</rss>

