【问题标题】:iReport table joining issues and results in repeating valuesiReport 表连接问题并导致重复值
【发布时间】:2015-12-03 15:58:43
【问题描述】:

我想首先说我已经查看、研究并尝试了在 SO 上发布的其他问题,这些问题可能与我遇到的这个问题有关。没有一个有效,也没有一个与这个问题有关

我正在编写一份使用 SO(销售订单)表和 WO(工作订单)表中的数据的报告。我在照片中显示 2 个场景。当我仅使用零件、描述、SO# 和 SO 数量运行报告时,报告运行完美:)!

问题是当我添加 WO 表并添加值时 WO# 和 Quantity。 我知道这一定与表的连接方式 iReport 设置方式有关。

为了澄清图片中发生的事情,对于表格,我使用 PART 表格作为主键,报告应该做的是显示我,根据选择的部分,在 SO 和 WO 中仍然“未完成”的任何部分。因此,SO 仍然可能有一部分尚未“挑选和包装”,而 WO 也可能有一部分尚未“挑选和包装”,但您可以拥有 WO 而不是 SO,反之亦然。

问题:如何防止我的 WO# 和 WO Qty 值像它们一样重复并最终弄乱我的总和?由于这些值在重复,我的 sum 函数不断将它们相加并给出错误的数字。 感谢您提供的任何帮助!


这些是照片。在我添加 WO 表和值之前,该报告运行良好——这显示在照片中。

现在接下来的 4 张照片是我添加 WO 表和之后的结果


【问题讨论】:

  • 在我看来,前几天我帮助你解决了一个关于变量的裁判评估时间的问题......那个去哪里了?,在我回答之后你删除了它...... . 如果是这样,我写一个答案是没有意义的......因为我所做的不仅仅是对你有帮助,而是对社区有帮助......如果你删除问题和答案......好吧..我们不是对社区有所帮助..
  • 对不起,你把它读成“咄咄逼人”,我会努力改进我的cmets。您应该更好地阅读我的评论,我很简单地说,如果您在有人回答之前想出答案(因为在这些标签上,有人需要几个小时才能回答),如果您自己回答问题或删除问题,那就太好了这个问题,因为回答需要时间和精力,并且有评论..“我已经解决了”,有点烦人......你自己想想......“那你为什么不回答呢!”
  • 您对所有重复的内容进行分组...但是由于您在 SO 和 WO (其他部分)之间没有关系,因此将它们放在同一行有点奇怪(1 SO 不相关到 1 WO),看起来更像是两个不同的表??
  • 如果你喜欢它们两个在你的报表中是两个不同的表,你可以使用相对查询来做 2 个子报表,(在主报表中使用 JREmptyDatasource(1) (或返回 1 的查询)记录),您也可以使用 jr:table 组件(但它有点复杂,我会使用子报告,因为您似乎已经熟悉如何使用细节带)..
  • 看到误会被如此亲切地解决也很爽!好东西。

标签: mysql jasper-reports report reporting


【解决方案1】:

SO 和 WO 之间似乎没有联系,因此将两者放在同一行似乎不正确。如果您想在同一份报告中查看两种类型的订单,那么我建议每一行都有 SO 或 WO 的数据。要在同一报告中获取两种类型的订单,您可以使用联合来分别返回每种类型的订单的结果。您需要添加某种“类型”列来显示正在显示的订单类型。下面是一个可以实现这一点的查询。我只包含了对答案至关重要的列。希望你能明白这一点。我不确定哪个是数量的适当列,所以这可能需要更改。

SELECT
PART."NUM" AS PART_NUM,
PART."DESCRIPTION" AS PART_DESCRIPTION,
'Sales Order' AS RESULT_TYPE
SO."NUM" ORDER_NUMBER,
SOITEM."QTYTOFULFILL" AS QTY
FROM
"PART" PART
INNER JOIN "PRODUCT" PRODUCT ON PART."ID" = PRODUCT."PARTID" AND PRODUCT."ID" = PART."DEFAULTPRODUCTID"
INNER JOIN "SOITEM" SOITEM ON SOITEM."PRODUCTID" = PRODUCT."ID"
INNER JOIN "SO" SO ON SOITEM."SOID" = SO."ID"
WHERE
PART."NUM" = $P{partNUM}
UNION ALL
SELECT
PART."NUM" AS PART_NUM,
PART."DESCRIPTION" AS PART_DESCRIPTION,
'Work Order' AS RESULT_TYPE,
WO."NUM" AS ORDER_NUMBER,
WOITEM."QTYUSED" AS QTY
FROM
"PART" PART
INNER JOIN "PRODUCT" PRODUCT ON PART."ID" = PRODUCT."PARTID" AND PRODUCT."ID" = PART."DEFAULTPRODUCTID"
INNER JOIN "WOITEM" WOITEM ON PART."ID" = WOITEM."PARTID"
INNER JOIN "WO" WO ON WOITEM."WOID" = WO."ID"
WHERE
PART."NUM" = $P{partNUM}

【讨论】:

    猜你喜欢
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-25
    • 1970-01-01
    相关资源
    最近更新 更多