I have inherited a VBA application that we use to notify land owners of changes in zoning near their properties. I did not write the original application and I have not done much programming in VBA. I am currently working on replacing this application with a python add-in, but a change in state law is forcing me to update the VBA application because of time constraints. The new state law requires that with any zoning cases municipalities must notify school districts of any changes in zoning that occur within the district boundaries. I have create a polygon feature class of the school districts with the mailing addresses for each district. Users can choose to select one or more parcels or zoning case polygons or choose to select a polygon shapefile to designate the area being rezoned. The application then converts these polygons to a graphic element and then creates a graphical buffer around first graphic. These graphics are then use select the parcels that intersect the combined graphics, select the corresponding records in a related tax roll table and export the results into a dbf file. I want to use a spatial filter to select any school district polygons that intersect the shapefile polygons or the original selection before the graphics are created. Then store the selected records in a global selectionset and insert the records into the final dbf. I have tried to create a procedure to do this, but it keeps crashing on me. Here is what I have so far:
I would appreciate any help or advise that anyone can offer.
Code:
Public Sub SelectSchoolDistrict()
Dim pMxApp As IMxApplication
Dim pMap As IMap
Dim pMxDoc As IMxDocument
Dim pActiveView As IActiveView
Dim pEnumFeature As IEnumFeature
Dim pFeature As IFeature
Set pMxApp = Application
Set pMxDoc = Application.Document
Set pActiveView = pMxDoc.FocusMap
Set pMap = pMxDoc.FocusMap
Dim pFeatureCursor As IFeatureCursor
Dim pFeatureSelection As IFeatureSelection
Dim pSelectionSet As ISelectionSet
Set pFeatureSelection = pMxDoc.FocusMap.Layer(1) 'FeatureSelection
Set pSelectionSet = pFeatureSelection.SelectionSet
m_SetSelectableLayer ("School District")
If ThisDocument.g_Model = 2 Then
Dim pISDLayer As IFeatureLayer
Dim pSearchLayer As ILayer
Dim ISDcount As Integer
For ISDcount = 0 To pMxDoc.FocusMap.LayerCount - 1
Set pSearchLayer = pMxDoc.FocusMap.Layer(ISDcount)
If pSearchLayer.Name = "School Districts" Then
Set pISDLayer = pSearchLayer
Exit For
End If
Next
Dim pISDfSel As IFeatureSelection
Set pISDfSel = pISDLayer
Dim pEnumParcelIDs As IEnumIDs
Set pEnumParcelIDs = pSelectionSet.IDs
Dim pGeoCollParcel As IGeometryCollection
Set pGeoCollParcel = New GeometryBag
Dim count As Long
For count = 1 To pSelectionSet.count
pGeoCollParcel.AddGeometry pISDLayer.FeatureClass.GetFeature(pEnumParcelIDs.Next).Shape
Next count
Dim pISDSpatialFilter As ISpatialFilter
Set pISDSpatialFilter = New SpatialFilter
With pISDSpatialFilter
Set .Geometry = pGeoCollParcel
.GeometryField = "Shape"
.SpatialRel = esriSpatialRelContains
End With
pISDfSel.SelectFeatures pISDSpatialFilter, esriSelectionResultNew, False
Set gISDSelectionSet = pISDfSel.SelectionSet
End If
'End Section to add ISD addresses
End Sub