Создание списка из таблицы

0 голосов
спросил 21 Янв, 04 от Гость (210,080 баллов) в категории Программные продукты Esri

Помогите, пожайлуста.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

Начал программировать на VB, но постоянно натыкаюсь на углы и шероховатости. Вопрос вот в чем: надо получить список со значением всех строк одного поля (допустим, Streets) и запихнуть его в ListBox, причем значения должны быть уникальными, т.е. без повторов. У меня выросла такая кострукция:

 

Dim BuildTable As ITable

  Dim StreetField As Long

  Dim MyQueryFilter As IQueryFilter

  Dim RowCounter As IRow

  Dim pCursor As ICursor

  Dim UniqueFlag As Boolean

 

Set MyQueryFilter = New QueryFilter

    With MyQueryFilter

      .SubFields = "STREETS"

      .WhereClause = "STREETS <> ''"

    End With

    StreetField = BuildTable.FindField("STREETS")

   

    Set pCursor = BuildTable.Search(MyQueryFilter, True)

    Set RowCounter = pCursor.NextRow

    While Not RowCounter Is Nothing

      UniqueFlag = True

      For LCounter = 0 To FormSearch.ListBoxStreet.ListCount - 1

        If RowCounter.Value(StreetField) = FormSearch.ListBoxStreet.List(LCounter) Then

          UniqueFlag = False

          Exit For

        End If

      Next LCounter

      If UniqueFlag = True Then

<SPAN style="mso-far

1 Ответ

0 голосов
ответил 21 Янв, 04 от Alexander1 (32,520 баллов)

Попробуй эту функцию:

Public Function GetUniqueValues(theFeatureClass As IFeatureClass, _
                                theFieldName As String) As Collection

Dim pDataStat As IDataStatistics
Dim pStatResults As IStatisticsResults
Dim pEnumVar As IEnumVariantSimple
Dim pStatCursor As ICursor
Dim value As Variant
Dim pCollection As New Collection

Set pStatCursor = theFeatureClass.Search(Nothing, False)
Set pDataStat = New DataStatistics
pDataStat.Field = theFieldName
Set pDataStat.Cursor = pStatCursor
Set pEnumVar = pDataStat.UniqueValues
    pEnumVar.Reset
    value = pEnumVar.Next
      Do Until IsEmpty(value)
        pCollection.Add value
        value = pEnumVar.Next
      Loop
Set GetUniqueValues = pCollection

' Clean variables

Set pDataStat = Nothing
Set pStatResults = Nothing
Set pEnumVar = Nothing
Set pStatCursor = Nothing
Set pCollection = Nothing

End Function

Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...