14

AOT 中的每个表都有一个 ID,我如何发现给定 ID 的表名?

4

8 回答 8

26

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

select NAME 
  from SQLDICTIONARY
 where TABLEID = 505
   and FIELDID = 0
于 2012-10-11T12:16:47.160 回答
18

在 X++ 中,使用tableId2Name函数。

从 GUI 中,选择 Tools/Development tools/Application objects/Application objects,然后过滤 TableInternalHeader 的 recordType 和您要查找的表 id 的 parentId。

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

于 2010-01-08T04:05:55.753 回答
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中的信息

希望对你有用,问候!

于 2015-04-13T13:28:53.460 回答
2

如果需要AX系统表名,可以使用tableId2nameorDictTable.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
于 2014-04-28T11:01:18.990 回答
2

或者您可以尝试:

select  Name, AxId
from MicrosoftDynamicsAX_model.dbo.ModelElement (nolock) 
where ElementType = 44
order by AxId
于 2016-02-22T15:08:37.657 回答
1

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

于 2010-11-12T18:36:12.130 回答
1

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

于 2012-08-28T13:18:16.800 回答
1

最简单的方法:

  1. 创建一个项目(不是必需的,但以后更容易删除)
  2. 为您的项目添加新视图
  3. 添加数据源SqlSyncInfo
  4. 将字段 ID、MessageType、SyncTable、TableName 等拖到字段中
  5. 打开视图

它提供了所有表名及其各自的 ID。只过滤你想要的。如果您知道表 ID,请搜索它。如果您知道表名,请搜索它。

于 2018-06-12T20:08:55.337 回答