HOW TO
Instructions provided describe how to create a sorted list of unique values from a table or feature class. A sorted list of unique values can be created by first sorting a table based on the column of interest and then generating a list of unique values. Normally, a list of unique values is in the order of occurence of the unique value. If the table is in order, each value is encountered in order and produces an ordered list.
Code:
Dim pWorkspace As IWorkspace
Dim pWorkspaceFactory As IWorkspaceFactory
Set pWorkspaceFactory = New SdeWorkspaceFactory
Dim pPropertySet As IPropertySet
Set pPropertySet = New PropertySet
With pPropertySet
.SetProperty "Server", "testserver"
.SetProperty "Instance", "5253"
.SetProperty "Database", "sde"
.SetProperty "user", "example"
.SetProperty "password", "example"
.SetProperty "version", "sde.DEFAULT"
End With
Set pWorkspace = pWorkspaceFactory.Open(pPropertySet, Me.hWnd)
Dim pFeatureWorkspace As IFeatureWorkspace
Set pFeatureWorkspace = pWorkspace
Dim pFeatureClass As IFeatureClass
Set pFeatureClass = pFeatureWorkspace.OpenFeatureClass("Counties")
Code:
Dim pWorkspace As IWorkspace
Dim pWorkspaceFactory As IWorkspaceFactory
Set pWorkspaceFactory = New AccessWorkspaceFactory
Set pWorkspace = pWorkspaceFactory.OpenFromFile("D:\Data\example.mdb", 0)
Dim pFeatureWorkspace As IFeatureWorkspace
Set pFeatureWorkspace = pWorkspace
Dim pFeatureClass As IFeatureClass
Set pFeatureClass = pFeatureWorkspace.OpenFeatureClass("Counties")
Code:
Dim pWorkspace As IWorkspace
Dim pWorkspaceFactory As IWorkspaceFactory
Set pWorkspaceFactory = New ShapefileWorkspaceFactory
Set pWorkspace = pWorkspaceFactory.OpenFromFile("D:\Data", 0)
Dim pFeatureWorkspace As IFeatureWorkspace
Set pFeatureWorkspace = pWorkspace
Dim pFeatureClass As IFeatureClass
Set pFeatureClass = pFeatureWorkspace.OpenFeatureClass("Counties")
Code:
Dim pWorkspace As IWorkspace
Dim pWorkspaceFactory As IWorkspaceFactory
Set pWorkspaceFactory = New ArcInfoWorkspaceFactory
Set pWorkspace = pWorkspaceFactory.OpenFromFile("D:\Data", 0)
Dim pFeatureWorkspace As IFeatureWorkspace
Set pFeatureWorkspace = pWorkspace
Dim pFeatureClass As IFeatureClass
Set pFeatureClass = pFeatureWorkspace.OpenFeatureClass("Counties:polygon")
Code:
Dim sFieldName as String
sFieldName = "state_name"
Dim pTableSort As ITableSort
Set pTableSort = New esriGeoDatabase.TableSort ' ArcGIS 9.X
'Set pTableSort = New esriCore.TableSort ' ArcGIS 8.x
With pTableSort
.Fields = sFieldName
.Ascending(sFieldName) = True
.CaseSensitive(sFieldName) = False
Set .QueryFilter = Nothing
Set .Table = pFeatureClass
End With
pTableSort.Sort Nothing
Dim pFeatureCursor As IFeatureCursor
Set pFeatureCursor = pTableSort.Rows
Code:
Dim pDataStatistics As IDataStatistics
Set pDataStatistics = New DataStatistics
pDataStatistics.Field = sFieldName
Set pDataStatistics.Cursor = pFeatureCursor
Dim pEnumVar As IEnumVariantSimple
Set pEnumVar = pDataStatistics.UniqueValues
Code:
Dim value As Variant
value = pEnumVar.Next
Do Until IsEmpty(value)
Debug.Print value
value = pEnumVar.Next
Loop
Code:
Dim pWorkspace As IWorkspace
Dim pWorkspaceFactory As IWorkspaceFactory
Set pWorkspaceFactory = New ShapefileWorkspaceFactory
Set pWorkspace = pWorkspaceFactory.OpenFromFile("D:\Data", 0)
Dim pFeatureWorkspace As IFeatureWorkspace
Set pFeatureWorkspace = pWorkspace
Dim pFeatureClass As IFeatureClass
Set pFeatureClass = pFeatureWorkspace.OpenFeatureClass("Counties")
Dim sFieldName as String
sFieldName = "state_name"
'Set pTableSort = New esriCore.TableSort 'ArcGIS 8.X
Set pTableSort = New TableSort 'ArcGIS 9.X
With pTableSort
.Fields = sFieldName
.Ascending(sFieldName) = True
.CaseSensitive(sFieldName) = False
Set .QueryFilter = Nothing
Set .Table = pFeatureClass
End With
pTableSort.Sort Nothing
Dim pFeatureCursor As IFeatureCursor
Set pFeatureCursor = pTableSort.Rows
Dim pDataStatistics As IDataStatistics
Set pDataStatistics = New DataStatistics
pDataStatistics.Field = sFieldName
Set pDataStatistics.Cursor = pFeatureCursor
Dim pEnumVar As IEnumVariantSimple
Set pEnumVar = pDataStatistics.UniqueValues
Dim value As Variant
value = pEnumVar.Next
Do Until IsEmpty(value)
Debug.Print value
value = pEnumVar.Next
Loop
Get help from ArcGIS experts
Download the Esri Support App