1

我正在使用 Dynamics AIF 在 C# 中编写此代码。

如何在 Dynamics QueryService 上执行部分字符串查询?

动态查询将是这样的:

WHERE %1.Field LIKE '*partialstring*'

这就是我正在做的事情:

QueryDataRangeMetadata range = new QueryDataRangeMetadata();
range.FieldName = field;
range.TableName = tableName;
range.Enabled = true;
range.Value = string.Format(" LIKE '*{0}*'", id);
query.DataSources[0].Ranges[0] = range;

我想到了这个解决方案,因为这个解决方案有效:

range.Value = ">2000";

但不是那个使用 like... 有什么办法可以解决这个问题吗?任何解决方法?

根据 Joris 的说法,在这篇文章http://daxmusings.codecrib.com/2013/09/linq-to-ax-example-using-wpf.html中,您不能使用动态 Linq 对字符串执行部分查询,我是QueryService 有同样的问题。

4

1 回答 1

1

我已经在https://community.dynamics.com/ax/f/33/p/148074/333993.aspx从 Denis Macchinetti 那里得到了答案。

回答:

Denis Macchinetti 于 2014 年 12 月 29 日上午 10:32 回复

嗨爱神

在我看来,您可以使用动态查询。

看看http://msdn.microsoft.com/en-us/library/gg847959.aspx,动态查询部分。

实际上,创建一个扩展 AifQueryBuilder 类的 AOT 类。

然后调用 QueryServiceClient.ExecuteDynamicQuery 方法并传递 X++ 查询类的名称和任何查询参数。

一个例子是标准类 CustTransQueryBuilder。

这样,您就可以处理 AX 内部的“like”条件了!

其他链接:

http://blogs.msdn.com/b/axsupport/archive/2012/02/17/calling-the-query-service.aspx

http://msdn.microsoft.com/en-us/library/gg879657.aspx

于 2014-12-29T19:03:26.373 回答