Что-то у меня не выходит ничего.
Начальные условия:
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);