AX 用代码方式调用静态Query(AOT\Queries节点下面的Query)的方法
static void AXD_CallQuery_SalesInfo(Args _args)
{
SysQueryRun queryRun = new SysQueryRun(querystr(AXD_SalesInfo));
SalesLine m_salesLine;
InventTable m_InventTable;
;
if (queryRun.prompt())
{
while (queryRun.next())
{
m_salesLine = queryRun.get(tableNum(salesLine));
m_InventTable = queryRun.get(tableNum(InventTable));
if (queryRun.changed(tableNum(salesLine)))
{
info(strfmt("SalesID: %1,itemid:%2",
m_salesLine.salesID,m_InventTable.itemId));
}
}
}
}
Query构造条件里面不同字段结果是或的关系
复杂表达式: Qbr = qbds.addRange(fieldnum(InventTable,ItemId)); Qbr.value(strfmt(‘(%1 == “%2”)’,fieldstr(InventTable,ItemId),queryvalue(‘I-999’)); 到目前,你可能会觉得表达式不过是把简单的问题搞复杂而已,但是,我要说的是,表达式功能很强大,我们会在后面做更详细的介绍。 在使用strfmt来构造表达式的时候有几点要注意: (a) 传递给value方法的参数最外层要用’value’的形式括起来,即用单引号括起来; (b) 表达式中的每一个等式以及整个表达式都要使用小括号括起来,如: ‘((%1 == %2) || (%1 == %3))’ (c) 变量依次在表达式中用%n 的形式表示; (d) 如果被用来做过滤的值是字符串型的,必须用双引号将值所对应的变量括起来,如: Strfmt(‘(%1 == “%2”)’,fieldstr(InventTable,ItemId),queryvalue(‘I-999’));