0

作为集成要求的一部分,我需要查询在特定日期和时间之后已修改的商机记录?

现在,Opportunity 有一个名为 ProductRevenue 的子对象,具有一对多的关系。无论如何,我是否可以构建一个查询页面,该页面将获取在特定日期和时间之后其机会字段“或”其子 ProductRevenue 字段已被修改的记录?

我曾尝试使用 SearchSpec 参数,但它不允许我跨子对象字段进行查询。

例如:

ObjOpptyQueryPageInput.ListOfOpportunity.Opportunity.searchspec = "([ModifiedDate] > '01/01/2013 00:00:00') OR ([ProductRevenueData.ModifiedDate] >= '01/01/2013 00:00:00')";

[上面这段用 C# 编写的代码给我一个错误提示 - 对象 Opportunity 没有一个名为 - ProductRevenueData.ModifiedDate 的集成组件。]

任何帮助将不胜感激。谢谢你。

4

3 回答 3

1

我自己一直在寻找答案,虽然不是解决方案,但这是我的理解。

在 Web 服务 2.0 中,Oracle 表示“所有匹配父条件的父记录,并且只返回匹配子条件的子记录”。

您实际上可以在父级和子级上定义“searchspec”,它确实按照 Oracle 定义的方式工作。但是,这可能不是您正在寻找的行为。当你这样做时,你会得到所有匹配 parent.searchspec 的父母,不管它的孩子是否匹配 child.searchspec。但是,这些父母只会在查询结果中拥有与您的 child.searchspec 匹配的孩子。因此,如果您想要的只是“有这些孩子的父母”或“这些孩子”,那么您就不走运了。因为你得到的是“许多父母和他们的一些孩子”。

因此,即使您对两个查询进行后处理,您也必须花费一些时间。:(

顺便说一句,您的两个单独的查询必须看起来像这样:

查询1。 ObjOpptyQueryPageInput.ListOfOpportunity.Opportunity.searchspec = "([ModifiedDate] > '01/01/2013 00:00:00')";

查询2。 ObjOpptyQueryPageInput.ListOfOpportunity.Opportunity.ListOfProductRevenue.ProductRevenue.searchspec = "([ModifiedDate] >= '01/01/2013 00:00:00')";

然后对查询 2 进行后处理,取出所有没有孩子的父母。然后将其与查询 1 的结果结合。

于 2014-09-12T22:20:04.480 回答
0

根据我的经验,您将无法使用他们的 V2.0 api(即 searchspec)来执行此操作。您可以使用 V1.0 api 执行此操作,但这将返回与您的条件匹配的所有父记录以及所有相关的 ProductRevenue 记录,无论它们是否符合条件。我做了类似的事情,然后根据 xpath 谓词过滤器对数据进行后处理。我认为,唯一的其他选择是 2 个单独的查询。

于 2014-04-24T20:34:46.713 回答
0

我遇到了同样的问题,我尝试了很多方法来解决问题,但现在你应该处理返回的结果:你可以使用DOM,XPathregular expressions为返回的结果提取你想要的信息。

就我而言,我使用了 XPath,因为它非常快速且更容易。这是我发布的带有正确答案的问题的链接: Xpath solution for the parent-child query result

我希望这能解决问题。

于 2015-11-25T08:49:59.170 回答