Friday, May 25, 2012

How to get table name and number of records in each table in AOT

Today, I came across a requirement to find out the name of each table in AOT along with the number of records for each table.
Here is the code to achieve this functionality;


void getTableNameRecordCount(Args _args)
{
    #AOT Name name;
    NumberOf recordCount;
    TreeNode treeNode;
    SysDictTable sysDictTable;
    ;
    treeNode = TreeNode::findNode(#TablesPath);
    treeNode = treeNode.AOTfirstChild();
    while (treeNode)
    {
        name = treeNode.AOTname();
        sysDictTable = SysDictTable::newTableId(treeNode.applObjectId());
        recordCount = sysDictTable.recordCount(false);
        if (recordCount)
        info (strfmt("@SYS26868", name, recordCount));
        treeNode = treeNode.AOTnextSibling();
    }
}