2017-07-06 72 views
1

我必須做一個ExecuteMultiple,在系統字段address1_postalcode上使用過濾器。如何按郵政編碼範圍過濾?

過濾器的條件是郵政編碼應該在一個範圍內。

我用這兩個過濾器,但結果並沒有考慮到條件:

filter.Conditions.Add(
    new ConditionExpression(
    "address1_postalcode", 
    ConditionOperator.LessThan, 
    postalcodeMax 
) 
); 

filter.Conditions.Add(
    new ConditionExpression(
    "address1_postalcode", 
    ConditionOperator.GreaterThan, 
    postalcodeMin 
) 
); 

postalcodeMinpostalcodeMax是整數,我知道postalCode字段是字符串。

你有什麼想法嗎?

回答

1

您無法對單行文本執行此類查詢:您必須將該值轉換爲數字。

一個解決方案(關閉我的頭頂部)可能是創建一個自定義數字字段,並通過插件檢索時填充它。

+1

插件每次運行查詢時都會記錄每條記錄 – jasonscript

+0

@jasonscript這是另一種可能的方法,但是必須以某種方式使其在所有現有記錄上運行以填充數據,檢索式插件就像是一種計算字段並且數據立即可用。我相信還有更多解決這個問題的方法...... – Alex

0

在FetchXML和查詢表達式中,大於和小於運算符都使用字符串。

雖然字符串和整數的排序可能不同,但可以通過在條件中使用postalcodeMin.ToString()和postalcodeMax.ToString()來開始。

僅供參考,我成功地測試這些條件:

new ConditionExpression 
{ 
    AttributeName = "address1_postalcode", 
    Operator = ConditionOperator.GreaterEqual, 
    Values = {"88888"} 
}, 
new ConditionExpression 
{ 
    AttributeName = "address1_postalcode", 
    Operator = ConditionOperator.LessEqual, 
    Values = {"99999" } 
} 

這FetchXML:對`update`可能是一個更好的選擇,否則該插件將有上運行

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false"> 
    <entity name="account"> 
    <attribute name="ownerid" /> 
    <filter type="and"> 
     <condition attribute="owneridname" operator="gt" value="Smith" /> 
    </filter> 
    </entity> 
</fetch> 
相關問題