2016-09-21 46 views
2

我必须构建一个专门的表单,该表格可查询InventTrans表中的一些购买交易。将条件添加到带有OR的表单数据源的两列

必须选择交易,或者使用非空凭证,或者使用非空装箱单ID(PackingSlipId)。

在查看如何在查询范围中指定此项时,我发现可以将此查询范围与该表的RecId相关联。这是通常和经典的方式来做到这一点?看我的例子(这似乎工作)。

QueryBuildDataSource qbds; 
    ; 

    qbds = this.query().dataSourceTable(tableNum(inventTrans)); 

    sysQuery::findOrCreateRange(qbds, fieldNum(InventTrans, RecId)).value(
    strfmt('(%1 != "") || (%2 != "")', 
      fieldstr(InventTrans, Voucher), 
      fieldstr(InventTrans, PackingSlipId))); 
+1

我已经看到它完全按照这种方式完成,我从来没有对此感觉正确,但AFAIK为你所需要的,它几乎是唯一的方法就是使用Query对象来完成它。 –

回答

4

那些被称为范围表达式和是陈述一个Query对象更复杂的查询的唯一办法 - 看this MSDN page

另外看看this Axaptapedia page(感谢FH-Inway

关于如果它是古典的方式:不 - 只在必要时使用它

+1

Axaptapedia在这个[主题](http://www.axaptapedia.com/Expressions_in_query_ranges)上也有一篇很好的文章,提供了更多的细节和例子,这些细节和例子在处理查询表达式时总是很有用。 –

+1

好点 - 随着时间流逝,差点忘了那边:)将它添加到答案中 – DAXaholic