En nuestro ejemplo usamos 4 layers o shapes como se muestra en la imagen siguiente:
La rutina para insertar 3 columnas (una de Texto, otra de Numero y una ultima de Fecha) en los shapes en el ArcMap es la siguiente:
Sub ProcLayers()
Dim pApp As IApplication
Dim pMxDoc As IMxDocument
Dim pMap As IMap
Dim LayerProc As ILayer ' en la variable LayerProc guardo el shape o layer a trabajar
Dim pFeatureClass As IFeatureClass
Dim pFeatureLayer As IFeatureLayer
Dim ColumnaNueva As IFieldEdit ' variable donde esta guardado la columna nueva
Set pApp = Application
Set pMxDoc = pApp.Document
Set pMap = pMxDoc.FocusMap
For i = 0 To pMap.LayerCount - 1 ' con este FOR leo uno por una los shapes o layers en la vista
Set LayerProc = pMap.Layer(i) 'guardo en LayerProc el layer o shape en la posicion i
Set pFeatureLayer = LayerProc '
Set pFeatureClass = pFeatureLayer.FeatureClass
Set ColumnaNueva = New Field
'creamos una columna de tipo STRING / TEXTO
ColumnaNueva.Type = esriFieldTypeString 'definiendo el tipo de la nueva columna
ColumnaNueva.Length = 20 'Longitud de la nueva columna
ColumnaNueva.Name = "C_TEXTO" 'Nombre de la nueva columna
pFeatureClass.AddField ColumnaNueva 'añadiendo la nueva columna al shape
'creamos una columna de tipo DATE / FECHA
ColumnaNueva.Type = esriFieldTypeDate
ColumnaNueva.Name = "C_DATE"
pFeatureClass.AddField ColumnaNueva
'creamos una columna de tipo NUMERICO / LONG
With ColumnaNueva
.Type = esriFieldTypeLong
.Precision = 18 'Longitud de la nueva columna, aca no tiene Scale por ser entero
.Name = "C_LONG"
End With
pFeatureClass.AddField ColumnaNueva
'en el caso que si deseamos crear una columna de tipo DOUBLE
'With ColumnaNueva
' .Type = esriFieldTypeDouble
' .Precision = 18 'Longitud de la nueva columna
' .Scale = 5' de las 18 cifras, 5 seran decimales
' .Name = "C_DOUBLE"
'End With
'pFeatureClass.AddField ColumnaNueva
Next
End Sub
La tabla de los 4 shapes procesados sera como se muestra en la figura:
Vemos que ahora existe 4 columnas, de los cuales, eliminaremos la columna “Id” que esta en los shapes mostrados en el ArcMap es la siguiente rutina:
Sub ProcLayers_BORRAR()
Dim pApp As IApplication
Dim pMxDoc As IMxDocument
Dim pMap As IMap
Dim LayerProc As ILayer
Dim pFeatureClass As IFeatureClass
Dim pFeatureLayer As IFeatureLayer
Dim ColumnaBorrar As IFieldEdit
Set pApp = Application
Set pMxDoc = pApp.Document
Set pMap = pMxDoc.FocusMap
For i = 0 To pMap.LayerCount - 1
Set LayerProc = pMap.Layer(i)
Set pFeatureLayer = LayerProc
Set pFeatureClass = pFeatureLayer.FeatureClass
Set ColumnaBorrar = New Field
If pFeatureClass.FindField("Id") >= 0 Then 'buscamos la columna a borrar "Id"
MsgBox "Columna encontrada"
ColumnaBorrar.Name = "Id"
pFeatureClass.DeleteField ColumnaBorrar 'si existe esta columna, es eliminada
Else
MsgBox "Columna no encontrada"
End If
Next
End Sub
Ahora vemos que fue eliminado.
Esperando que sea de utilidad este post, me despido hasta febrero, nos vemos.