Dear everybody:I have problems with this line of code: pDS = pGPUtils.OpenFeatureClassFromString(ruta & outname)The error message is in spanish:"-2147467259 Devuelto error HRESULT E-Fail de una llamada a un componente COM"You may see in the complete code that the code makes a selection of a combination of Featureclass-joined table. The sql-string gets one value of the for-next-structure and finally it checks if some records are selected. Only if their are some records selected it exports the selected records to a new shape. This boocle is correct only for 1 selection. Once a shapfile is exported and the boocle repeats I get this error mentioned above in the following line of code:pDS = pGPUtils.OpenFeatureClassFromString(ruta & outname)What is wrong with the IDataset? Shall I initialize every time the boocle repeats? Their seems to be a COM problem but I don´t know what kind of?Thanks very much for your help!!Anika Sub ExportSelectedFeatures_HabTodos_Bio() ' ---- Output Shapefile Name ---- ' ------------------------------- Dim pGPUtils As IGPUtilities Dim pDS As IDataset Dim pMxDoc As IMxDocument Dim pMap As IMap Dim pFeatSel As IFeatureSelection Dim pGeoFtrLyr As IGeoFeatureLayer Dim pFtrCls As IFeatureClass Dim pExportOp As IExportOperation Dim pInDsName As IDatasetName Dim pOutFCName As IFeatureClassName Dim pQryFltr As IQueryFilter Dim pClone As IClone Dim pGeomDef As IGeometryDef Dim lShpFldIdx As Long Dim pSelSet As ISelectionSet Dim numlstbio As Integer Dim k As Integer Dim sql1 As String pMxDoc = My.ArcMap.Document pMap = pMxDoc.FocusMap ' Use GPUtilities to delete the shapefile if it exists pGPUtils = New GPUtilities On Error Resume Next pFeatSel = pMap.Layer(numerolayer) pGeoFtrLyr = pFeatSel pFtrCls = pGeoFtrLyr.DisplayFeatureClass numlstbio = Me.lstBio.Items.Count ' Create the Query pQryFltr = New QueryFilter For k = 0 To numlstbio - 1 nomlstbio = Me.lstBio.Items.Item(k) Select Case numerolayer Case Is = 0 outname = strCodUE & "_" & nombresigla & "_" & strDescCodHabit & "_" & nomlstbio & "_InvHab25.shp" sql1 = "GIS_HAB25000_Etrs89_UTMBio.REGBIO = '" & nomlstbio & "' AND t" & nombresigla & ".CodHABITTODOS = '" & nombresigla & "'" pQryFltr.WhereClause = sql1 Case Is = 1 outname = strCodUE & "_" & nombresigla & "_" & strDescCodHabit & "_" & nomlstbio & "_InvHabFlu.shp" sql1 = "GIS_HabFlu_licsley_Etrs89_UTMBIO.REGBIO = '" & nomlstbio & "' AND t" & nombresigla & ".CodHABITTODOS = '" & nombresigla & "'" pQryFltr.WhereClause = sql1 Case Is = 2 outname = strCodUE & "_" & nombresigla & "_" & strDescCodHabit & "_" & nomlstbio & "_InvHabHum.shp" sql1 = "GIS_HabHum_Etrs89_UTMBIO.REGBIO = '" & nomlstbio & "' AND t" & nombresigla & ".CodHABITTODOS = '" & nombresigla & "'" pQryFltr.WhereClause = sql1 End Select pFeatSel.SelectFeatures(pQryFltr, esriSelectionResultEnum.esriSelectionResultNew, False) pFeatSel.SelectionChanged() pSelSet = pFeatSel.SelectionSet ' Use GPUtilities to delete the shapefile if it exists pDS = pGPUtils.OpenFeatureClassFromString(ruta & outname) If Err.Number = 0 Then pDS.Delete() On Error GoTo 0 If pSelSet.Count > 0 Then ' Create the output Featureclass Name pOutFCName = pGPUtils.CreateFeatureClassName(ruta & outname) pDS = pFtrCls ' Get the Input Dataset Name pInDsName = pDS.FullName '################################# lShpFldIdx = pFtrCls.FindField(pFtrCls.ShapeFieldName) pGeomDef = pFtrCls.Fields.Field(lShpFldIdx).GeometryDef ' Execute the export operation pExportOp = New ExportOperation pExportOp.ExportFeatureClass(pInDsName, pQryFltr, Nothing, pGeomDef, pOutFCName, 0) pMxDoc.ActiveView.Refresh() End If Next End Sub
Los miembros registrados pueden publicar, seguir actualizaciones y más. ¿Nuevo aquí? Regístrate gratis.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.