Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 晶体报告席-条件和问题_Sql_Crystal Reports_Report - Fatal编程技术网

Sql 晶体报告席-条件和问题

Sql 晶体报告席-条件和问题,sql,crystal-reports,report,Sql,Crystal Reports,Report,我有一个名为invoiceShippings的数据表。它为发票上装运的每个产品继续一行。每个产品都属于一个产品类别,我可以根据它进行查询和筛选。一些产品是带有物料清单的成品,其中物料清单(BOM)是组合在一起形成成品的零件列表 在invoiceShippings表中,成品列出了价格,但没有成本。然后,它后面是成品的组件(BOM),而这些组件又有成本,但没有价格。我有一个单独的表格,列出了所有的组成项目,以及它所指向的成品。请注意,零部件商品可以属于多个BOM表 我当前可以根据产品类别(从联接到其

我有一个名为
invoiceShippings
的数据表。它为发票上装运的每个产品继续一行。每个产品都属于一个产品类别,我可以根据它进行查询和筛选。一些产品是带有
物料清单的成品,其中
物料清单(BOM)是组合在一起形成成品的零件列表

invoiceShippings
表中,成品列出了价格,但没有成本。然后,它后面是成品的组件(BOM),而这些组件又有成本,但没有价格。我有一个单独的表格,列出了所有的组成项目,以及它所指向的成品。请注意,零部件商品可以属于多个BOM表

我当前可以根据产品类别(从联接到其他表)按所需的产品筛选
invoiceShippings
。我想做的是获取完成的正确编号,并获得组成该BOM表的所有零件的列表,然后返回到InvoiceShippings,并将与这些零件和发票匹配的所有行的成本相加。但是我使用Crystal的时间还不够长,不知道在查询级别应该做什么,如何处理命令表,如何处理公式,等等

库中最上面的表是BOM表,第二个表是
发票装运
,第三个表是所需的结果


任何帮助都将不胜感激。

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

  • 按发票编号分组
  • 为订单ID、SKU和ProductName创建公式

    如果价格为0,成本为0,则 “Orider ID”汇总在每个公式上作为最大值,并将其放在分组发票行上

  • 由于数量是恒定的,您可以将该字段放在分组的发票行上
  • 插入->价格汇总,然后使用金额汇总成本,并将其放在分组发票行上
  • 隐藏细节
  • 这将为您提供所需的结果。这是因为您的公式只打印成品信息,其他项目为空。因此,当使用最大值时,将打印非空白项

    希望这有帮助


    新解决方案

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

    我注意到你不能用发票上的材料来确认材料清单中的成品。这些材料会自我重复。我们必须用成品来鉴定他们

  • 外接程序InvoiceShipments并将其重命名为InvoiceShipments1(添加表时,在右侧窗口中,右键单击表并重命名
  • 使用select expert,隔离成品。(价格0,成本=0)
  • 数据库->数据库专家。添加到BillofMaterials表中。将SKU链接到ProductSKU。左外联接
  • 现在物料与发票编号关联,我们可以尝试将发票装运的另一个副本链接到BOM。这很棘手

  • 数据库->数据库专家。将InvoiceShipments表重命名为InvoiceShipments2。将InvoiceShipments2.invoice#链接到InvoiceShipments1.invoice#,并将InvoiceShipments2.SKU链接到物料#。使用左外联接
  • 在OrderID、SKU和ProductName列上创建一个在InvoiceShipments1和InvoiceShipments2之间交替使用的公式

    如果ISNULL({InvoiceShipments1.OrderID}),则 {InvoiceShipments2.OrderID} 其他的 {InvoiceShipments1.OrderID}

  • 创建一个结合InvoiceShipments2.发票#和SKU(SKU公式版本)的公式

  • 按上一步中的公式分组(如果发票包含2个成品,则将为一张发票创建2行)
  • 在GF put InvoiceShipments2.invoice#、OrderID(公式版本)、SKU(公式版本)、ProductNmae(公式版本)、InvoiceShipments2.quantity、Summize(InvoiceShipments2.price)、Summize(InvoiceShipments2.cost)
  • 隐藏生长激素

  • 希望它能起作用!

    对不起,我考虑过了,在我的例子中效果很好,但如果您在同一张发票上有两个成品,它就不适用于您。如果我提出了一些建议,我会让您知道。谢谢。我有另一个选项。我正在添加一个名为productCategory的新字段。成品的productCategory将有一个名称,而零部件商品的ProductCategory会有所不同。因此我想我可以检查每一行,看看它是否在成品类别中,然后循环下一行如果productCategory是组件商品,那么将所有成本加总,并将总和返回到原始成品行。我只是不知道如何在Crystal中按语法进行此操作。