如何获取表中字段使用的EnumType

问题描述 投票:0回答:1

我想获取表上字段使用的枚举类型,最好通过 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 中获取它的值。

感谢任何提示。

microsoft-dynamics axapta x++ dynamics-365-operations
1个回答
0
投票

以下示例显示了检索基于枚举的字段的枚举 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(零)。

© www.soinside.com 2019 - 2024. All rights reserved.