2015-06-20 2 views
0

Я хочу изменить некоторое строковое поле в sdegeodatabse со следующим кодом. Код работает без проблем. но после запуска поданная длина возвращается к стандартной длине. Что мне не хватает?Как изменить длину поля с помощью arcobject

static void writetablecode(IDataset dataset) 
     { 
      ITable table = dataset as ITable; 

      IFieldsEdit fields = table.Fields as IFieldsEdit; 
      for (int i = 0; i < fields.FieldCount; i++) 
      { 
       IFieldEdit field = fields.Field[i] as IFieldEdit; 
       if (field.Type==esriFieldType.esriFieldTypeString & field.Length<30) 
       { 
        field.Length_2 = 30; 
       } 

      } 
     } 

ответ

0

Это не возможно изменить длину поля, единственный способ для достижения этой цели является создать новое поле, скопируйте данные в новое поле. http://support.esri.com/de/knowledgebase/techarticles/detail/42783

IFieldEdit не должен использоваться для изменения существующих полей. По ссылке API:

Интерфейс IFieldEdit используется при создании новых полей. Вы не должны использовать его для изменения полей, для этого используйте IClassSchemaEdit. В общем случае при изменении полей ограничения, применяемые в ArcCatalog, также применяются в ArcObjects; например, вы не можете изменить имя или тип поля.

Смежные вопросы