16

Each table in the AOT has an ID, how can I discover the table name given an ID?

Jan B. Kjeldsen
  • 17,817
  • 5
  • 32
  • 50
David
  • 161
  • 1
  • 1
  • 3

8 Answers8

29

Looking at the SQL dictironary is really the correct method. Search for the line with the FieldId equal to 0. Using TSQL this will tell the name of the table for tableid 505

select NAME 
  from SQLDICTIONARY
 where TABLEID = 505
   and FIELDID = 0
Yaroslav
  • 6,476
  • 10
  • 48
  • 89
DAX
  • 307
  • 3
  • 2
19

From X++, use the tableId2Name function.

From the GUI, choose Tools/Development tools/Application objects/Application objects and filter for a recordType of TableInternalHeader and a parentId of the table id you are looking for.

Or in the AOT, right click on Tables and choose Find. On the Name & Location tab, set Search to All nodes. On the Properties tab click Selected next to ID and fill in the table id in the Range field.

Jay Hofacker
  • 3,439
  • 20
  • 14
3

I dont'know if this is your answer, if you want to give the TableName with his ID, you can use the method: str tableId2Name(int _tableid)

For example: If YourTable has ID :123456 ; use method

       tableId2PName(123456) 

will return the str name YourTable.

info(strFmt("%1" , tableId2PName(123456))); -> VideoStamp the name.

I used the info in https://msdn.microsoft.com/en-us/library/aa498759.aspx

I hope to useful , greetings!

ulisses
  • 1,549
  • 3
  • 37
  • 85
2

If you need AX system table name you can use tableId2name or DictTable.name method.

If you need SQL table name you shoud use DictTable.name method with first argument of DbBackend::Sql

Example:

print new DictTable(tableNum(DirPartyTable)).name(DbBackend::Sql);
print new DictTable(tableNum(OMOperatingUnit)).name(DbBackend::Sql);
pause;

// result:
// DIRPARTYTABLE
// DIRPARTYTABLE
Matej
  • 7,517
  • 2
  • 36
  • 45
2

Or you can try:

select  Name, AxId
from MicrosoftDynamicsAX_model.dbo.ModelElement (nolock) 
where ElementType = 44
order by AxId
Sterling Archer
  • 22,070
  • 18
  • 81
  • 118
Bob
  • 21
  • 1
1

In the AOT, go to the System Documentation node. In the Tables node, find SqlDictionary and right click and open it with the table browser. Filter the column TabId with your ID and fieldid == 0, his will give you the name of the table.

Issac paul
  • 11
  • 1
1

In the AOT, go to the System Documentation node. In the Tables node, find SqlDictionary and open it with the table browser. Filter the column TabId with your ID.

1

Easiest way:

  1. Create a project (not necessary but easier to delete later)
  2. Add a new view to your project
  3. Add the data source SqlSyncInfo
  4. Drag the fields ID, MessageType, SyncTable, TableName, etc to field
  5. Open the view

It provides all the table names and their respective IDs. Just filter what you want. If you know the table ID, search for that. If you know the table name, search for that.

Mihai Chelaru
  • 7,614
  • 14
  • 45
  • 51