我们可以使用以下这两种方法,但建议使用ARCSDE Geodatabase数据类型或者ACCESS GDB来进行相关操作:
一种:
ICursorPtr ipCursor;
IQueryFilterPtr ipQueryFilter(CLSID_QueryFilter);
hr=ipQueryFilter->put_SubFields(_bstr_t("DISTINCT "+strFields)); //strFields的形式是连续字段名用英文逗号隔开。
hr=ipTable->Search(ipQueryFilter,VARIANT_FALSE,&ipCursor);
二种:
Public Sub ShowUniqueValues(pTable As ITable, sFieldName As String)
Dim pQueryDef As IQueryDef
Dim pRow As IRow
Dim pCursor As ICursor
Dim pFeatureWorkspace As IFeatureWorkspace
Dim pDataset As IDataset
Set pDataset = pTable
Set pFeatureWorkspace = pDataset.Workspace
Set pQueryDef = pFeatureWorkspace.CreateQueryDef
With pQueryDef
.Tables = pDataset.Name ' Fully qualified table name
.SubFields = "DISTINCT(" & sFieldName & ")"
Set pCursor = .Evaluate
End With
Set pRow = pCursor.NextRow
Do Until pRow Is Nothing
Debug.Print pRow.Value(0) ' Note only one field in the cursor
Set pRow = pCursor.NextRow
Loop
End Sub
一种:
ICursorPtr ipCursor;
IQueryFilterPtr ipQueryFilter(CLSID_QueryFilter);
hr=ipQueryFilter->put_SubFields(_bstr_t("DISTINCT "+strFields)); //strFields的形式是连续字段名用英文逗号隔开。
hr=ipTable->Search(ipQueryFilter,VARIANT_FALSE,&ipCursor);
二种:
Public Sub ShowUniqueValues(pTable As ITable, sFieldName As String)
Dim pQueryDef As IQueryDef
Dim pRow As IRow
Dim pCursor As ICursor
Dim pFeatureWorkspace As IFeatureWorkspace
Dim pDataset As IDataset
Set pDataset = pTable
Set pFeatureWorkspace = pDataset.Workspace
Set pQueryDef = pFeatureWorkspace.CreateQueryDef
With pQueryDef
.Tables = pDataset.Name ' Fully qualified table name
.SubFields = "DISTINCT(" & sFieldName & ")"
Set pCursor = .Evaluate
End With
Set pRow = pCursor.NextRow
Do Until pRow Is Nothing
Debug.Print pRow.Value(0) ' Note only one field in the cursor
Set pRow = pCursor.NextRow
Loop
End Sub