【问题标题】:Generic Inquiry Parent Child Relation一般查询亲子关系
【发布时间】:2018-09-29 02:03:56
【问题描述】:

我一直在尝试从通用查询中的 Contract、ContractDetail、ContractItem 和 InventoryItem 中提取数据。因此,在添加所有 4 个表后,我创建了如下关系。

Contract 和 ContractDetail 之间的关系很好。现在由于 ContractDetail 使用 ContractItemID,我将关系设置如下。但它会给我这样的错误。

而且,在查看堆栈跟踪时,我发现生成的查询如下所示:

DECLARE @P0 SmallDateTime(4) SET @P0='9/27/2018 12:00:00 AM' DECLARE @P1 nvarchar(MAX) SET @P1='0' SELECT COUNT(*) 
FROM ( 
    [Contract] InnerQuery_Contract 
    INNER JOIN ( 
        [ContractDetail] InnerQuery_ContractDetail_ContractDetail 
        INNER JOIN [Contract] InnerQuery_ContractDetail_Contract ON [InnerQuery_ContractDetail_Contract].CompanyID IN (1, 3) AND 32 = SUBSTRING([InnerQuery_ContractDetail_Contract].CompanyMask, 1, 1) & 32 AND [InnerQuery_ContractDetail_Contract].[DeletedDatabaseRecord] = 0 AND [InnerQuery_ContractDetail_ContractDetail].[ContractID] = [InnerQuery_ContractDetail_Contract].[ContractID] AND [InnerQuery_ContractDetail_ContractDetail].[RevID] = [InnerQuery_ContractDetail_Contract].[RevID] 
        LEFT JOIN 
            [ContractDetail] InnerQuery_ContractDetail_ContractDetailExt_ContractDetailExt 
         ON [InnerQuery_ContractDetail_ContractDetailExt_ContractDetailExt].[ContractID] = [InnerQuery_ContractDetail_ContractDetail].[ContractID] AND [InnerQuery_ContractDetail_ContractDetailExt_ContractDetailExt].[LineNbr] = [InnerQuery_ContractDetail_ContractDetail].[LineNbr] AND [InnerQuery_ContractDetail_ContractDetailExt_ContractDetailExt].[RevID] = [InnerQuery_ContractDetail_Contract].[LastActiveRevID] AND [InnerQuery_ContractDetail_ContractDetailExt_ContractDetailExt].CompanyID = 3 
    ) ON [InnerQuery_Contract].[ContractID] = [InnerQuery_ContractDetail_ContractDetail].[ContractID] AND [InnerQuery_ContractItem].[ContractItemID] = [InnerQuery_ContractDetail_ContractDetail].[ContractItemID] AND [InnerQuery_ContractDetail_ContractDetail].CompanyID = 3 
    INNER JOIN [ContractItem] InnerQuery_ContractItem ON [InnerQuery_ContractItem].CompanyID = 3 AND [InventoryItem].[inventoryID] =  [InnerQuery_ContractItem].[RecurringItemID] 
) 
WHERE [InnerQuery_Contract].CompanyID IN (1, 3) AND 32 = SUBSTRING([InnerQuery_Contract].CompanyMask, 1, 1) & 32 AND [InnerQuery_Contract].[DeletedDatabaseRecord] = 0 AND [InnerQuery_Contract].[UsrLockDate] < @P0 AND (CASE WHEN ([InnerQuery_Contract].[BaseType] = 'T' OR [InnerQuery_Contract].[BaseType] = 'R') THEN CONVERT (BIT, 1) ELSE CONVERT (BIT, 0) END) = @P1 OPTION(OPTIMIZE FOR UNKNOWN) 

因此,查询中表的别名存在问题。那么,我该如何解决这个问题呢?

谢谢。

【问题讨论】:

    标签: acumatica


    【解决方案1】:

    Acumatica 中的联接的工作方式与 SQL 中的完全一样。首先在 SQL 中构建查询并获得所需的结果,然后尝试在 Generic Inquiry 中构建相同的结果。

    除此之外,我看不到合同和库存之间有任何关系。请解释你想要得到什么。

    这是在通用查询中加入表格的方式

    【讨论】:

    • Contract 和 InventoryItem 没有直接关系。 Contract 和 ContractDetail 与 ContractID 相关。 ContractDetail 和 ContractItem 与 ContractItemID 相关。而 ContractItem 和 InventoryItem 是通过 ContractItem.RecurringItemID 和 InventoryItem.InventoryItemID 字段关联的。
    • 这些是我想在结果网格中显示的字段。 imgur.com/a/8EEqPB0
    • 我已经修改了我上面的回复。
    • 我认为我们不能将 ContractDetail 设置为父项,将 ContractItem 设置为子项(与 ContractItem 和 InventoryItem 相同),因为 ContractItem 是具有主键字段 ContractItemID 并用作 ContractDetail 中的 ForeignKey 字段的项。即使我尝试上述关系,我也会收到此错误。 imgur.com/a/ohhUvUQ
    • 我尝试根据您的回答设置确切的关系。但我收到以下错误。 imgur.com/a/ZPvZh33 这是堆栈跟踪:imgur.com/a/eTWCuFT 奇怪的是,如果我再次尝试保存它,父表和子表会反转回来,ContractDetail 成为父表,Contract 成为子表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-30
    • 1970-01-01
    • 2012-05-07
    相关资源
    最近更新 更多