AOT 中的每个表都有一个 ID,我如何发现给定 ID 的表名?
8 回答
看SQL字典确实是正确的方法。搜索 FieldId 等于 0 的行。使用 TSQL 这将告诉 tableid 505 的表的名称
select NAME
from SQLDICTIONARY
where TABLEID = 505
and FIELDID = 0
在 X++ 中,使用tableId2Name函数。
从 GUI 中,选择 Tools/Development tools/Application objects/Application objects,然后过滤 TableInternalHeader 的 recordType 和您要查找的表 id 的 parentId。
或者在 AOT 中,右键单击表并选择查找。在名称和位置选项卡上,将搜索设置为所有节点。在 Properties 选项卡上,单击 ID 旁边的 Selected 并在 Range 字段中填写表 id。
我不知道这是否是你的答案,如果你想给 TableName 和他的 ID,你可以使用方法:str tableId2Name(int _tableid)
例如:如果 YourTable 的 ID 为 :123456 ;使用方法
tableId2PName(123456)
将返回 str 名称 YourTable。
info(strFmt("%1" , tableId2PName(123456))); -> VideoStamp the name.
我使用了 https://msdn.microsoft.com/en-us/library/aa498759.aspx中的信息
希望对你有用,问候!
如果需要AX系统表名,可以使用tableId2name
orDictTable.name
方法。
如果你需要SQL表名,你应该使用DictTable.name
带有第一个参数的方法DbBackend::Sql
例子:
print new DictTable(tableNum(DirPartyTable)).name(DbBackend::Sql);
print new DictTable(tableNum(OMOperatingUnit)).name(DbBackend::Sql);
pause;
// result:
// DIRPARTYTABLE
// DIRPARTYTABLE
或者您可以尝试:
select Name, AxId
from MicrosoftDynamicsAX_model.dbo.ModelElement (nolock)
where ElementType = 44
order by AxId
在 AOT 中,转到系统文档节点。在 Tables 节点中,找到 SqlDictionary 并使用表浏览器打开它。使用您的 ID 过滤列 TabId。
在 AOT 中,转到系统文档节点。在 Tables 节点中,找到 SqlDictionary 并右键单击并使用表浏览器打开它。使用您的 ID 和 fieldid == 0 过滤列 TabId,他将为您提供表的名称。
最简单的方法:
- 创建一个项目(不是必需的,但以后更容易删除)
- 为您的项目添加新视图
- 添加数据源SqlSyncInfo
- 将字段 ID、MessageType、SyncTable、TableName 等拖到字段中
- 打开视图
它提供了所有表名及其各自的 ID。只过滤你想要的。如果您知道表 ID,请搜索它。如果您知道表名,请搜索它。