如何按邮政编码范围过滤?

时间:2017-07-06 08:14:20

标签: dynamics-crm microsoft-dynamics dynamics-crm-online

我必须使用系统字段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字段是字符串。

你有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您无法在单行文本上执行此类查询:您必须将值转换为数字。

一个解决方案(在我的头顶)可能是创建一个自定义数字字段,并在检索时通过插件即时填写。

答案 1 :(得分:0)

在FetchXML和Query Expression中,大于和小于运算符都使用字符串。

虽然字符串和整数的排序可能不同,但您可以在条件中使用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:

<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>