2017-07-06 5 views
1

システムフィールドaddress1_postalcodeのフィルタを使用してExecuteMultipleを実行する必要があります。郵便番号の範囲でフィルタリングする方法は?

フィルタの条件は、郵便番号が範囲内にあることです。

私は、これら2つのフィルタを使用したが、結果は考慮に入れた状態になりません。

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

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

postalcodeMinpostalcodeMaxは整数であり、私はpostalCodeフィールドが文字列であることを知っています。

ご存知ですか?

答えて

1

この種類のクエリは、1行のテキストでは実行できません。値を数値に変換する必要があります。

解決策(私の頭の上から外す)は、カスタム数値フィールドを作成し、検索時にプラグインを使用してオンザフライで入力することです。

+1

プラグイン

は参考のために、私は正常にこれらの条件をテストしましたあなたがクエリを実行するたびにすべてのレコード – jasonscript

+0

@jasonscriptそれはもう一つの可能​​なアプローチですが、データを埋めるために既存のすべてのレコードで何とか実行しなければならない場合、on-retrieveプラグインは、データはすぐに利用可能です。私はこれを解決するもっと多くの方法があると確信しています... – Alex

0

FetchXMLとクエリ式の両方で、より大きいおよびより小さい演算子は文字列で処理されます。

文字列とintのソートは異なる場合がありますが、条件に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>