作为集成需求的一部分,我需要查询在特定日期和时间之后已修改的商机记录?
现在,Opportunity有一个名为ProductRevenue的子对象,它具有一对多的关系。反正我是否可以构建一个querypage来获取记录,其机会字段“OR”是其子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的集成组件。]
任何帮助将不胜感激。谢谢。
答案 0 :(得分:1)
我一直在寻找答案,这是我的理解,虽然不是解决方案。
在Web Services 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的结果联合起来。
答案 1 :(得分:0)
根据我的经验,您将无法使用他们的V2.0 api(即searchspec)执行此操作。您可以使用V1.0 api执行此操作但是这将返回符合条件的所有父记录以及所有相关的ProductRevenue记录,无论它们是否符合条件。我做了类似的事情,然后对xpath谓词过滤器后处理数据。我认为唯一的另一个选择是2个单独的查询。
答案 2 :(得分:0)
我遇到了同样的问题,我尝试了很多方法来解决问题,但是现在你应该处理返回的结果:你可以使用DOM
,XPath
或regular expressions
提取返回结果所需的信息。
在我的情况下,我使用XPath,因为它非常快速,更容易。这是我用正确答案发布的问题的链接: Xpath solution for the parent-child query result
我希望这能解决这个问题。