如何在Dynamics AX中按ID查找表名

时间:2010-01-08 00:41:46

标签: axapta dynamics-ax-2009

AOT中的每个表都有一个ID,如何在给出ID的情况下发现表名?

8 个答案:

答案 0 :(得分:22)

查看SQL dictironary确实是正确的方法。 搜索FieldId等于0的行。 使用TSQL,这将告诉tableid 505的表名称

select NAME 
  from SQLDICTIONARY
 where TABLEID = 505
   and FIELDID = 0

答案 1 :(得分:17)

从X ++开始,使用tableId2Name函数。

从GUI中,选择工具/开发工具/应用程序对象/应用程序对象,并筛选TableInternalHeader的recordType和您要查找的表ID的parentId。

或者在AOT中,右键单击Tables并选择Find。在名称&位置选项卡,将搜索设置为所有节点。在Properties选项卡上,单击ID旁边的Selected,然后在Range字段中填写表id。

答案 2 :(得分:3)

我不知道这是不是你的答案, 如果你想给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

我希望有用,问候!

答案 3 :(得分:2)

如果您需要 AX 系统表名称,则可以使用tableId2nameDictTable.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

答案 4 :(得分:2)

或者您可以尝试:

select  Name, AxId
from MicrosoftDynamicsAX_model.dbo.ModelElement (nolock) 
where ElementType = 44
order by AxId

答案 5 :(得分:1)

在AOT中,转到“系统文档”节点。 在Tables节点中,找到SqlDictionary并使用表浏览器打开它。 使用您的ID过滤列TabId。

答案 6 :(得分:1)

在AOT中,转到“系统文档”节点。在Tables节点中,找到SqlDictionary并右键单击并使用表浏览器打开它。使用您的ID和fieldid == 0过滤列TabId,他将为您提供表格的名称。

答案 7 :(得分:1)

最简单的方法:

  1. 创建一个项目(不是必需的,但以后更容易删除)
  2. 向项目添加新视图
  3. 添加数据源 SqlSyncInfo
  4. 将字段ID,MessageType,SyncTable,TableName等拖到字段
  5. 打开视图
  6. 它提供了所有表名及其各自的ID。只需过滤你想要的东西。如果您知道表ID,请搜索该ID。如果你知道表名,请搜索它。