2017-03-10 3 views
0

私は、カスタムクエリを持つビューから動作する問い合わせフォームを持っています。このフォームにはフィルタがあり、これをフォームのビューのexecuteQueryメソッドで使用して、さまざまなフィールドに範囲を追加します。他のフィールドに基づいてフィルタを追加するフォームでクエリ文字列を変更します。

新しい要件は、クエリの2つのフィールドに基づいてフィルタリングすることです。 例:PurchLineテーブルは、クエリ内のテーブルの1つです。

新しい範囲が必要とされている:

if PurchLine.ItemId != “” then 
    filter by PurchLine.PurchStatus == None 

しかし、アイテムが特定の値を持っている場合、

then filter by PurchStatus == Received. 

(OK、これは単なる一例です!)。

アイテムフィールドに基づいて、PurchStatusに範囲を追加するためにクエリを変更できません。

クエリの文字列値がどのように見えるかはわかりますが、クエリ文字列を変更するにはどうすればよいですか?私は、クエリを変更するにはどうすればよい

AND (((ItemId = N'') AND (PurchStatus = 0)) OR ((ItemId = N'XXX123') AND (PurchStatus = 2))) 

SELECT FIRSTFAST * FROM OpenPOLinesView(OpenPOLinesView) WHERE ((CreatedDateTime<='2016-11-30T23:59:59')) AND ((VendAccount = N'S000001048')) 

が、私は最後にこれを追加したい:(私はのexecuteQueryでスーパーにブレークポイント場合)

は現在のクエリ文字列は次のようになりますコード内の文字列?

答えて

3

これにはクエリ式を使用できます(例:

queryBuildRange.value(strFmt('((%1 == %2) || ((%1 == %3) && (%4 == "%5")))', 
         fieldStr(InventTable, ItemType), 
         any2int(ItemType::Service), 
         any2int(ItemType::Item), 
         fieldStr(InventTable, ProjCategoryId), 
         queryValue("Spares"))); 

詳細については、このリンクUsing Expressions in Query Ranges [AX 2012]を参照してください。

+0

ありがとうございました!ステータスの範囲を追加し、ItemIdフィールドを確認することができました。 – Celeste

関連する問題