DynamicsAX -根据表名获取SQL语句

本文关键字:获取 SQL 语句 -根 DynamicsAX | 更新日期: 2023-09-27 18:16:31

我想在AX2012中创建一个类,我可以从AX2012业务连接器调用它,它允许我为指定的表生成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++开发经验。

谢谢你的帮助!

DynamicsAX -根据表名获取SQL语句

您可以使用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();
}

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

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;
}

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