如何纪录排序(ITableSort)
本例要实现的是如何将一个FeatureClass中的数据按某字段的值进行排序。
l 要点
定义ITableSort接口对象,并用TableSort类实现之,设置排序所用到的字段、排序方式(升序或降序)以及排序的数据源,然后使用ITableSort.Sort方法进行排序。
主要用到ITableSort接口。
l 程序说明
函数OpenFeatureClass获得当前激活的Map中第一层的IFeatureClass接口对象。
函数SortFeatures按照pFeatureClass的第五个字段值对pFeatureClass的数据进行从小到大排序,并返回一个排好序的ICursor接口对象。
l 代码
|
Private Function SortFeatures(pFeatureClass As IFeatureClass) As ICursor Dim pTableSort As ITableSort Dim pFields As IFields Dim pField As IField Dim pQueryFilter As IQueryFilter Dim pCursor As ICursor On Error GoTo ErrorHandler: Set SortFeatures = Nothing Set pFields = pFeatureClass.Fields Set pField = pFields.Field(5) Set pTableSort = New esriCore.TableSort Set pQueryFilter = New QueryFilter Set pCursor = Nothing With pTableSort .Fields = pField.Name .Ascending(pField.Name) = True .CaseSensitive(pField.Name) = True Set .QueryFilter = pQueryFilter Set .Table = pFeatureClass End With pTableSort.Sort Nothing Set pCursor = pTableSort.Rows Set SortFeatures = pCursor If (pCursor Is Nothing) Then MsgBox ("未排序") Else MsgBox ("排序完成") End If Exit Function ErrorHandler: MsgBox Err.Description End Function Private Function OpenFeatureClass() As IFeatureClass Dim pMxDocument As IMxDocument Dim pMap As IMap Dim pFeatureLayer As IFeatureLayer Dim pFeatureClass As IFeatureClass On Error GoTo ErrorHandler: Set OpenFeatureClass = Nothing Set pMxDocument = ThisDocument Set pMap = pMxDocument.FocusMap If (pMap.LayerCount = 0) Then MsgBox ("缺少数据") Exit Function End If Set pFeatureLayer = pMap.Layer(0) Set pFeatureClass = pFeatureLayer.FeatureClass Set OpenFeatureClass = pFeatureClass Exit Function ErrorHandler: MsgBox Err.Description End Function Private Sub UIButtonControl1_Click() On Error GoTo ErrorHandler: Dim pFeatureClass As IFeatureClass Set pFeatureClass = OpenFeatureClass() SortFeatures pFeatureClass Exit Sub ErrorHandler: MsgBox Err.Description End Sub Private Sub UIButtonControl1_Click() On Error GoTo ErrorHandler: Dim pFeatureClass As IFeatureClass Set pFeatureClass = OpenFeatureClass() SortFeatures pFeatureClass Exit Sub ErrorHandler: MsgBox Err.Description End Sub |
浙公网安备 33010602011771号