如何在QueryBuilder中比较两个字段?

时间:2017-02-08 09:13:16

标签: axapta query-builder dynamics-ax-2012 x++ select-query

我正在使用 QueryBuilder 。 我想选择 VendTable 中有两个相等字段的所有记录。

我的代码看起来像这样:

QueryBuildDataSource qbds;
QueryRun        queryRun;

qbds= queryRun.query().dataSourceTable(tableNum(VendTable));
qbds.addRange(fieldNum(VendTable, BirthDate))
.value(strFmt('%1 == %2',strFmt("%1.%2",qbds.name(), fieldStr(VendTable,BirthDate)) ,strFmt("%1.%2", qbds.name(),fieldStr(VendTable,FieldTransDate))));

Debug 上,我看到了查询值:

  

SELECT * FROM VendTable(VendTable_1)WHERE((BirthDate = {ts'1900-01-01 00:00:00.000'}))

但不行,我想创建此查询:

select vendTable
 where vendTable.BirthDate== vendTable.FieldTransDate;

SELECT * FROM VendTable(VendTable_1)WHERE((BirthDate = FieldTransDate))

我想比较同一个表BirthDate == FieldTransDate

上的字段

如何通过QueryBuilder进行上面显示的查询?

谢谢, 享受!

1 个答案:

答案 0 :(得分:1)

您没有使用query expression的正确语法。记住括号:

qbds.addRange(fieldNum(VendTable, BirthDate))
    .value(strFmt('(%1 == %2)',
                  strFmt("%1.%2", qbds.name(), fieldStr(VendTable, BirthDate)),
                  strFmt("%1.%2", qbds.name(), fieldStr(VendTable, TransDate))));