修改表单上的查询字符串以添加基于其他字段的过滤器
Modify query string on a form to add filter based on other fields
我有一个查询表单,它在一个带有自定义查询的视图中工作。表单有过滤器,我在表单视图的 executeQuery 方法中使用它来添加各个字段的范围。
一个新要求是根据查询中的两个字段进行过滤。
示例:PurchLine table 是查询中的 table 之一。
需要一个新范围:
if PurchLine.ItemId != “” then
filter by PurchLine.PurchStatus == None
但是,如果项目具有特定值,
then filter by PurchStatus == Received.
(好的,这只是一个例子!)。
我无法修改我的查询以在基于 Item 字段的 PurchStatus 上添加范围。
我完全知道查询的字符串值应该是什么样子,但我该如何修改查询字符串?
当前查询字符串如下所示(如果我在 executeQuery 中的 super 上断点):
SELECT FIRSTFAST * FROM OpenPOLinesView(OpenPOLinesView) WHERE ((CreatedDateTime<='2016-11-30T23:59:59')) AND ((VendAccount = N'S000001048'))
我想在最后加上这个:
AND (((ItemId = N'') AND (PurchStatus = 0)) OR ((ItemId = N'XXX123') AND (PurchStatus = 2)))
如何修改代码中的查询字符串?
您可以为此使用查询表达式,例如
queryBuildRange.value(strFmt('((%1 == %2) || ((%1 == %3) && (%4 == "%5")))',
fieldStr(InventTable, ItemType),
any2int(ItemType::Service),
any2int(ItemType::Item),
fieldStr(InventTable, ProjCategoryId),
queryValue("Spares")));
我有一个查询表单,它在一个带有自定义查询的视图中工作。表单有过滤器,我在表单视图的 executeQuery 方法中使用它来添加各个字段的范围。
一个新要求是根据查询中的两个字段进行过滤。 示例:PurchLine table 是查询中的 table 之一。
需要一个新范围:
if PurchLine.ItemId != “” then
filter by PurchLine.PurchStatus == None
但是,如果项目具有特定值,
then filter by PurchStatus == Received.
(好的,这只是一个例子!)。
我无法修改我的查询以在基于 Item 字段的 PurchStatus 上添加范围。
我完全知道查询的字符串值应该是什么样子,但我该如何修改查询字符串?
当前查询字符串如下所示(如果我在 executeQuery 中的 super 上断点):
SELECT FIRSTFAST * FROM OpenPOLinesView(OpenPOLinesView) WHERE ((CreatedDateTime<='2016-11-30T23:59:59')) AND ((VendAccount = N'S000001048'))
我想在最后加上这个:
AND (((ItemId = N'') AND (PurchStatus = 0)) OR ((ItemId = N'XXX123') AND (PurchStatus = 2)))
如何修改代码中的查询字符串?
您可以为此使用查询表达式,例如
queryBuildRange.value(strFmt('((%1 == %2) || ((%1 == %3) && (%4 == "%5")))',
fieldStr(InventTable, ItemType),
any2int(ItemType::Service),
any2int(ItemType::Item),
fieldStr(InventTable, ProjCategoryId),
queryValue("Spares")));