DynamicsAX - 按表名获取SQL语句

时间:2014-08-05 10:35:12

标签: c# sql axapta dynamics-ax-2012 ax

我想在AX2012中创建一个类,我可以从Ax2012 Business Connector调用它,它允许我为指定的表生成SQL语句。

我在课堂上实施的方法是:

client server public static str getTableStatement(str tableName)
{    
     OMInternalOrganization org;
     select generateOnly org;
     info(org.getSQLStatement());
     return org.getSQLStatement();
}

我的问题是:我现在如何使用参数tableName而不是OMInternalOrganization的静态赋值。

找到另一种获取SQL语句的方法也很好。

我是.Net开发人员,几乎没有X ++开发经验。

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

您可以使用SysDictTable::makeRecord

client server public static str getTableStatement(str tableName)
{
    Common buffer;
    ;

    buffer = SysDictTable::newName(tableName).makeRecord();
    select generateOnly buffer;
    info(buffer.getSQLStatement());
    return buffer.getSQLStatement();
}

答案 1 :(得分:0)

如果您不需要表字段列表,可以使用以下代码。

client server public static str getTableStatement(str _tableName)
{
    SysDictTable dt = SysDictTable::newName(_tableName);
    str ret;    

    if (dt)
    {
        ret = strFmt('SELECT * FROM %1', dt.name(DbBackend::Sql));
    }

    return ret;
}

P.S。如果您只对SQL Server中的表名(而不是AX)感兴趣,则可以修改代码。