我正在使用QueryExpression为Dynamics crm过滤器生成过滤器,然后将其传递给我的CRM服务以检索结果。
QueryExpression queryCRM = new QueryExpression
{
EntityName = SourceID,
ColumnSet = new ColumnSet(FieldSet),
Criteria = new FilterExpression()
};
然后
queryCRM.Criteria.AddCondition(strFilterColumnName,ConditionOperator.On , strFilterValue);
在这里,我无法获取结果,任何人都可以帮我解决问题吗? 它不适用于"估计关闭"除此之外,它适用于所有其他列。
注意:=最初它似乎是一个操作员问题所以我使用" ConditionOperator.On" ,所以它解决了我的事件问题,但没有机会。
需要CRM专家的解决方案。
谢谢。
答案 0 :(得分:0)
strFilterValue是一个字符串吗?尝试将此参数作为DateTime传递。如果您可以完整地发布此部分代码,将会有所帮助。以下是一些示例代码,演示了按估计结束日期过滤机会的用法。
var estimatedCloseDate = DateTime.Parse("2014-10-07");
Guid createdId = Guid.Empty;
Entity matchingEntity = null;
try
{
// Create a test opp
var opp = new Entity("opportunity");
opp["name"] = "Testing Date Filter";
opp["customerid"] = new EntityReference("account", Guid.Parse("b9b0ed35-2a11-4fb6-a56f-5b8c04a3c1d1")); // A valid customer
opp["estimatedclosedate"] = estimatedCloseDate;
createdId = _service.Create(opp);
Console.WriteLine("Created Id: {0}", createdId);
// Create the filter expression
QueryExpression queryCRM = new QueryExpression
{
EntityName = "opportunity",
ColumnSet = new ColumnSet(true)
};
queryCRM.Criteria.AddCondition("estimatedclosedate", ConditionOperator.On, estimatedCloseDate);
// Run the search and check for a match vs the record just created
var results = _service.RetrieveMultiple(queryCRM);
foreach (var result in results.Entities)
{
if (result.Id == createdId)
{
matchingEntity = result;
}
}
// Survey says...
Console.WriteLine(matchingEntity == null
? "Matching entity not found!"
: "Matching entity found!");
}
finally
{
// Delete the created opp
if (createdId != Guid.Empty)
{
_service.Delete("opportunity", createdId);
}
}