I want to export a selectionset from a specified SDE layer, when get the featureclass via OpenFeatureClass methord, it's ok. But if get the featureclass from the existing layer in arcmap window, an error message prompted "Error exporting Data. Create output feature class failed". Is there any one know why?
The follows code is VBA running in arcmap:
Public Function gf_ErrorCheck(ByVal HwyGate As String, ByVal Rdele As String, ByVal ErrGate As String, _
ByVal sFolder As String, ByVal sFile As String, _
ByVal Server As String, ByVal Instance As String, ByVal user As String, password As String, _
Optional Database As String = "", Optional Version As String = "SDE.DEFAULT") As Boolean
Dim pWorkspace As IWorkspace
Dim pPropSet As IPropertySet
Set pPropSet = New PropertySet
With pPropSet
.SetProperty "SERVER", Server
.SetProperty "INSTANCE", Instance
.SetProperty "DATABASE", Database
.SetProperty "USER", user
.SetProperty "PASSWORD", password
.SetProperty "VERSION", Version
End With
Dim pSdeFact As IWorkspaceFactory
Set pSdeFact = New SdeWorkspaceFactory
Set pWorkspace = pSdeFact.Open(pPropSet, 0)
Dim pFeatureWorkspace As IFeatureWorkspace
Set pFeatureWorkspace = pWorkspace
Dim pFeatureClass1 As IFeatureClass
Dim pFeatLayer As IFeatureLayer
Set pFeatLayer = GetLayer(HwyGate)
Set pFeatureClass1 = pFeatLayer.FeatureClass
'Set pFeatureClass1 = pFeatureWorkspace.OpenFeatureClass(HwyGate)
Dim pSelectedSet As ISelectionSet
Dim pQF As IQueryFilter
Set pQF = New QueryFilter
pQF.whereClause = "rsname is null"
Set pSelectedSet = pFeatureClass1.Select(pQF, esriSelectionTypeIDSet, esriSelectionOptionNormal, Nothing)
If ExportSelection2SDE(pSelectedSet, pFeatureClass1, "ErrGate", Nothing) = True Then
End If
End Function
Public Function ExportSelection2SDE(ByVal pSelectionSet As ISelectionSet, ByVal pFC As IFeatureClass, _
ByVal strOutName As String, Optional ByVal pQueryFilter As IQueryFilter) As Boolean
On Error GoTo ErrorHandle
Const CSTR_METHOD_NAME As String = "ExportSelection2SDE"
Dim pOutWSName As IWorkspaceName
Dim pInDataset As IDataset
Dim pOutDataset As IDataset
Dim pInDatasetName As IDatasetName
Dim pInFCName As IFeatureClassName
Dim pOutDatasetName As IDatasetName
Dim pOutFCName As IFeatureClassName
Dim pInWSName As IWorkspaceName
Dim pGDef As IGeometryDef
Dim iGeomIndex As Long
Dim sShpName As String
Dim pFields As IFields
Dim pField As IField
Dim pExportOp As IExportOperation
sShpName = pFC.ShapeFieldName
Set pFields = pFC.Fields
iGeomIndex = pFields.FindField(sShpName)
Set pField = pFields.Field(iGeomIndex)
Set pGDef = pField.GeometryDef
Set pInDataset = pFC
Set pInFCName = pInDataset.FullName
Set pInDatasetName = pInFCName
Set pOutWSName = New WorkspaceName
Set pOutFCName = New FeatureClassName
Set pOutDatasetName = pOutFCName
Set pOutDatasetName.WorkspaceName = pInDatasetName.WorkspaceName
pOutDatasetName.Name = strOutName
Set pExportOp = New ExportOperation
pExportOp.ExportFeatureClass pInDatasetName, Nothing, pSelectionSet, pGDef, pOutFCName, 0
ExportSelection2SDE = True
Exit Function
If False Then
ErrorHandle:
ExportSelection2SDE = False
End If
End Function