获取最根级EDT类型名称
有时候需要修改某个扩展数据类型的属性,比如字段的长度等,这些属性只能在最根级的EDT类型上修改,所以需要找到最根级的EDT类型,这个小例子演示了如何根据当前表的字段获取其对应的最根级EDT类型。
附件是测试用例。
//Return the top extendtypeid,If error,return ''
static ExtendedDataTypeName GetFinalExtendedType(TableId _tableId,FieldId _fieldId)
{
SysDictField dictField;
SysDictType dictType;
ExtendedTypeId tmpExtendTypeId;
ExtendedTypeId finalExtendTypeId;
ExtendedTypeId getNextExtendedTypeId(DictType _dictType)
{
;
if(_dictType.extend())
return _dictType.extend();
else
return 0;
}
;
if(_tableId && _fieldId)
dictField = new SysDictField(_tableId,_fieldId);
else
return '';
dictType = new SysDictType(dictField.typeId());
if(!dictType)
return '';
finalExtendTypeId = dictType.id();
while(true)
{
tmpExtendTypeId = getNextExtendedTypeId(dictType);
//if not '',find next extendTypeId
if(tmpExtendTypeId)
{
finalExtendTypeId = tmpExtendTypeId;
dictType = new DictType(finalExtendTypeId);
}
else
break;
}
if(finalExtendTypeId)
return new dictType(finalExtendTypeId).Name();
else
return '';
}
static ExtendedDataTypeName GetFinalExtendedType(TableId _tableId,FieldId _fieldId)
{
SysDictField dictField;
SysDictType dictType;
ExtendedTypeId tmpExtendTypeId;
ExtendedTypeId finalExtendTypeId;
ExtendedTypeId getNextExtendedTypeId(DictType _dictType)
{
;
if(_dictType.extend())
return _dictType.extend();
else
return 0;
}
;
if(_tableId && _fieldId)
dictField = new SysDictField(_tableId,_fieldId);
else
return '';
dictType = new SysDictType(dictField.typeId());
if(!dictType)
return '';
finalExtendTypeId = dictType.id();
while(true)
{
tmpExtendTypeId = getNextExtendedTypeId(dictType);
//if not '',find next extendTypeId
if(tmpExtendTypeId)
{
finalExtendTypeId = tmpExtendTypeId;
dictType = new DictType(finalExtendTypeId);
}
else
break;
}
if(finalExtendTypeId)
return new dictType(finalExtendTypeId).Name();
else
return '';
}
附件是测试用例。