Hello all,
I have an ArcObjects add-in that works fine on the company server with and ArcSDE SQL Server database, but on the client's network, when the app attempts to save a new point, or changes to an existing point, it gets the following error: "The requested operation is invalid on a closed state. [StellarRoutes.DBO.Commercial_Bin_Points] State_ID = 14"
Here is the code:
| Protected Function SaveContChanges() |
| Dim pDataset As ESRI.ArcGIS.Geodatabase.IDataset |
| Dim tTable As ESRI.ArcGIS.Geodatabase.Table |
| Dim pfeatWorksspace As ESRI.ArcGIS.Geodatabase.IFeatureWorkspace |
| Dim m_pqueryfilter As ESRI.ArcGIS.Geodatabase.QueryFilter |
| Dim pcur As ESRI.ArcGIS.Geodatabase.ICursor |
| Dim prow As ESRI.ArcGIS.Geodatabase.IRow |
| Try |
| StartEditSession() |
| m_pLayer = GetLayer(ComboValue) |
| pFLayer = m_pLayer |
| pDataset = pFLayer |
| pfeatWorksspace = pDataset.Workspace |
| tTable = pfeatWorksspace.OpenTable("DBO.Commercial_Bin_Points") |
| m_pqueryfilter = New ESRI.ArcGIS.Geodatabase.QueryFilter |
| m_pqueryfilter.WhereClause = "Bin_ID = '" & txtBinID.Text & "'" |
| pcur = tTable.Search(m_pqueryfilter, False) |
| prow = pcur.NextRow |
| prow.Value(pcur.FindField("ContSize_ID")) = cboContSize.SelectedValue |
| prow.Value(pcur.FindField("ContColor_ID")) = cboContColor.SelectedValue |
| prow.Value(pcur.FindField("Route")) = cboRoutes.SelectedValue |
| prow.Value(pcur.FindField("ServiceType_ID")) = cboServiceType.SelectedValue |
| prow.Value(pcur.FindField("PickupType_ID")) = cboPickupType.SelectedValue |
| prow.Value(pcur.FindField("Notes")) = txtBinNotes.Text |
| prow.Value(pcur.FindField("X")) = Val(txtX.Text) |
| prow.Value(pcur.FindField("Y")) = Val(txtY.Text) |
| prow.Value(pcur.FindField("ADDRESS")) = cboAddress.Text |
| prow.Store() |
| StopEditSession() |
| Catch exception As Exception |
| MsgBox("Error: " & exception.Message) |
| End Try |
| End Function |
| Public Shared Sub StartEditSession() |
| Dim pDataset As ESRI.ArcGIS.Geodatabase.IDataset |
| Dim editor As ESRI.ArcGIS.Editor.IEditor |
| editor = My.ArcMap.Application.FindExtensionByName("esriEditor.Editor") |
| ' | If ComboValue Is Nothing Then |
| ' | MsgBox("Please Select the edit feature in the combobox!.") |
| ' | Exit Sub |
| ' | End If |
| m_pLayer = GetLayer(ComboValue) |
| pFLayer = m_pLayer |
| pDataset = pFLayer |
| If editor.EditState <> ESRI.ArcGIS.Editor.esriEditState.esriStateEditing Then |
| editor.StartEditing(pDataset.Workspace) |
| editor.StartOperation() |
| End If |
| Public Shared Sub StopEditSession() |
| Dim pDataset As ESRI.ArcGIS.Geodatabase.IDataset = Nothing |
| Dim editor As ESRI.ArcGIS.Editor.IEditor |
| editor = My.ArcMap.Application.FindExtensionByName("esriEditor.Editor") |
| m_pLayer = GetLayer(ComboValue) |
| pFLayer = m_pLayer |
| pDataset = pFLayer |
| If editor.EditState <> ESRI.ArcGIS.Editor.esriEditState.esriStateNotEditing Then |
| Try |
| editor.StopOperation("Add/Edit Container") |
| editor.StopEditing(True) |
| Catch ex As Exception |
| MsgBox(ex.Message, MsgBoxStyle.Critical) |
| End Try |
| End If |
| End Sub |
I'm banging my head against the wall here. I can't see why this works on my network and not on the clients.
Any help would be very much appreciated.
Jeff