我想在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 ++开发经验。
感谢您的帮助!
答案 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)感兴趣,则可以修改代码。