1

我有一个名为的数据表InvoiceShipments。对于发票上装运的每个产品,它会连续一行。每个产品都属于一个产品类别,我可以查询和过滤。一些产品是带有 的成品Bill of Material,其中Bill of Materials(BOM) 是组合成成品的部件列表。

InvoiceShipments表中,成品列出了价格但没有成本。紧随其后的是成品的组件 (BOM),这些组件有成本但没有价格。我有一个单独的表格,列出了所有组件项目以及它去往的成品。请注意,组件货物可以属于多个 BOM。

我目前可以InvoiceShipments根据产品类别(从连接到不同的表)过滤我想要的产品。我想要做的是获取已完成的好数字,并获取构成该 BOM 的所有零件#s 的列表,然后返回 InvoiceShipments 并汇总与这些组件#s 匹配的所有行的成本和发票#。但是我使用 Crystal 的时间还不够长,不知道在查询级别做什么、如何处理命令表、如何处理公式等。

示例截图:

库中的顶部表是 BOM 表,第二个表是InvoiceShipments,第三个是期望的结果。

任何帮助,将不胜感激。

4

1 回答 1

0

从我收集到的信息中,您希望合并发票编号,但使用成品信息。我做过类似的事情,解决方案有点奇怪,但它有效。您只需要 InvoiceShipments 表

  1. 按发票编号分组
  2. 为订单 ID、SKU 和产品名称创建公式

    IF Price <> 0 AND Cost = 0 THEN Orider ID '<-根据公式 (SKU, ProductName) ELSE "" 更改此项

  3. 在每个公式上插入-> 摘要为最大值,并将其放在分组发票行上。

  4. 由于数量是恒定的,您可以将该字段放在分组发票行上。
  5. 插入-> 价格汇总,然后使用 SUM 在成本上汇总,并将其放在分组发票行上。
  6. 隐藏细节。

这应该会给你你需要的结果。发生的事情是因为您的公式仅打印成品信息,其他项目为空白。因此,当您使用 MAXIMUM 时,将打印非空白项。

希望这可以帮助。


新解决方案

我没有像您的数据一样设置的任何表或视图,因此我无法测试此解决方案,但希望有足够的信息可以让您制定一个好的解决方案

我注意到您不能使用 InvoiceShipments 中的材料来识别 BillofMaterials 中的成品。材料会重复。我们必须使用成品来识别它们。

  1. 添加 InvoiceShipments 并重命名为 InvoiceShipments1(添加表格时,右侧窗口,右键单击表格并重命名。
  2. 使用精选专家,隔离您的成品。(价格 <> 0 且成本 = 0)
  3. 数据库 -> 数据库专家。添加到您的 BillofMaterials 表中。将 SKU 链接到 ProductSKU。左外连接

现在材料与发票编号相关联,我们可以尝试将 INvoiceShipments 的另一个副本链接到 BOM。这很棘手。

  1. 数据库 -> 数据库专家。添加 InvoiceShipments 表,将其重命名为 InvoiceShipments2。将 InvoiceShipments2.invoice# 链接到 InvoiceShipments1.Invoice#,将 InvoiceShipments2.SKU 链接到 Material#。使用左外连接
  2. 在 OrderID、SKU 和 ProductName 列上创建一个在 InvoiceShipments1 和 InvoiceShipments2 之间交替的公式

    IF ISNULL({InvoiceShipments1.OrderID}) THEN {InvoiceShipments2.OrderID} ELSE {InvoiceShipments1.OrderID}

  3. 创建一个结合 InvoiceShipments2.invoice# 和 SKU 的公式(SKU 公式版本)

  4. 在上一步中按公式分组(如果发票包含 2 个成品,它将为一个发票创建 2 行。
  5. 在GF上放InvoiceShipments2.invoice#、OrderID(公式版)、SKU(公式版)、ProductNmae(公式版)、InvoiceShipments2.quantity、Summerize(InvoiceShipments2.price)、Summerize(InvoiceShipments2.cost)
  6. 隐藏生长激素

希望它有效!

于 2012-09-27T14:47:04.450 回答