сортировка таблицы

0 голосов
спросил 20 Июль, 07 от new_sergei1 (1,240 баллов) в категории Программные продукты Esri
Что-то у меня не выходит ничего.
Начальные условия:
1) известен слой (№ 0), таблицу которого надо отсортировать;
2) поле, по которому необходимо произвести сортировку (№ 3)

P.S. Я такого раньше не делал вообще.

     IMapPtr ipMap = m_mapcontrol.GetMap();
     IActiveViewPtr ipActiveView = m_mapcontrol.GetActiveView();
     ILayerPtr ipLayer;

     ipMap->get_Layer(0, &ipLayer);

      IFeatureLayerPtr ipFeatureLayer(ipLayer);
      IFeatureClassPtr ipFeatureClass;

      ipFeatureLayer->get_FeatureClass(&ipFeatureClass);
      long* features_count = new long;

      ipFeatureClass->FeatureCount(NULL, features_count);
      ITablePtr ipTable;
      IFeaturePtr ipFeature;

      ipFeatureClass->GetFeature(0, &ipFeature);
      IRowPtr ipRow(ipFeature);

      VARIANT* value = new VARIANT;

      ipRow->get_Value(3, value);
      _bstr_t t = value;

      MessageBox(t);

      ipRow->get_Table(&ipTable);

      IFieldsPtr ipFields;
      ipTable->get_Fields(&ipFields);
      IFieldPtr ipField;
      ipFields->get_Field(3, &ipField);

      BSTR* field_name = new BSTR;
      ipField->get_Name(field_name);

     ITableSortPtr ipSortTable;
     ipSortTable.CreateInstance(CLSID_TableSort);

      ipSortTable->putref_Table(ipTable);
      ipSortTable->put_Fields(*field_name);

      ipSortTable->put_Ascending(*field_name, TRUE);

      VARIANT* max_value = new VARIANT;
      ipRow = NULL;

      ipTable->GetRow(0, &ipRow);
      ipRow->get_Value(3, max_value);

      _bstr_t t1 = max_value;

      MessageBox(t1);

1 Ответ

0 голосов
ответил 20 Июль, 07 от Tatkis (2,420 баллов)
В VB все как-то проще выглядит :)
 ' Сортировка таблицы
Dim ptableSort As ITableSort
Set ptablesort = New TableSort
With ptablesort
  .Fields = "Name"   ' поле, по которому идет сортировка
  .Ascending("Name") = True 
  Set .Table = ptable  'где ptable - таблица, которую надо отсортировать
End With
ptablesort.Sort Nothing    ' сортировка
 
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...