我想获取表上字段使用的枚举类型,最好通过 T-SQL 或 X++ 来获取。
我的目标是获取表的元数据,特别是 FieldName、FieldType (如果是字符串,则为长度,如果是 Enum,则为所有值):
我使用此代码获取了字段类型:
internal final class EnumValues
{
public static void main(Args _args)
{
SqlDictionary SqlDict;
while select fieldType from SqlDict group by SqlDict.fieldType
where SqlDict.tabId==19503
{
info(strfmt("%1:%2",enum2int(SqlDict.fieldType),SqlDict.fieldType));
}
}
}
输出:
49:
8:VarString
6:UtcDateTime
4:Enum
3:Date
2:Real
1:Integer
0:String
在输出值中,我现在必须深入研究的唯一类型是 Enum。如何获取字段上使用的 EnumType。如果我能得到它,那么我就可以从 ENUMVALUETABLE 和 ENUMIDTABLE 中获取它的值。
感谢任何提示。
以下示例显示了检索基于枚举的字段的枚举 ID 和枚举名称:
DictField df;
DictEnum de;
enumId id;
df = new DictField(tablenum(CustTable), fieldnum(CustTable, AccountNum));
if (df)
{
id = df.enumId();
if (0 != id)
{
de = new DictEnum(id);
if (de)
{
print de.name();
}
}
}
方法
enumId()
如果字段基于枚举,则返回枚举的 ID;否则,0(零)。