我正在尝试使用SSRS 2008 R2创建多个发票的批量报告。
我创建了初始发票报告,并使用参数进行设置;该参数使用InvoiceID填充发票报表中的数据。
我使用列表创建了另一个报表,列表中包含原始发票报表中的信息,但使用的是其他参数(BatchID)。我遇到的问题是,不是为每个invoiceID创建单个发票,而是为每个发票中的每个订单项创建发票。 ie~而不是根据InvoiceID合并多个项目(如原始报告所做的那样),而是为每个项目创建一个报告。
运行一批这些发票的最佳方法是什么?我是以错误的方式解决这个问题,还是我在正确的轨道上却错过了什么?
SELECT i.InvoiceId, i.InvoiceNumber, i.BillTo_Line1, i.BillTo_Line2, i.BillTo_City, i.BillTo_StateOrProvince, i.BillTo_PostalCode, i.CustomerIdName,
i.ce_OutstandingBalance, i.ce_BillToDate, i.ce_BillFromDate, i.TotalAmount, id.ProductIdName, id.ce_customeridName, id.ce_CustomerProductName,
id.InvoiceDetailId, id.BaseAmount, id.PricePerUnit, id.ce_rate
FROM
Invoice AS i RIGHT OUTER JOIN
InvoiceDetail AS id ON i.InvoiceId = id.InvoiceId
输入invoiceID后,我会收到报告
我的目的是能够针对多个发票号码运行报告,而无需选择发票号码本身。我有另一个表根据运行它们的批处理来收集invoiceid。
到目前为止,我尝试使用原始报表创建子报表,并创建一个单独的报表,该报表使用列表并尝试按InvoiceID对每个batchid进行分组。虽然我到目前为止每一个都没有成功。
我是SSRS的新手,并且一直在向MSDN提供有关SSRS和不同能力的文档。
答案 0 :(得分:6)
对于这种重复列表,这是理解列表/分组如何工作的问题。
列表,表格和矩阵都是相同的底层对象 - Tablix。
List是具有一个详细信息行的Tablix(即数据集中每行的一个Tablix行),该行中的一个文本框以及该文本框中的Rectangle。 Rectangle可以有更多的文本框等各种嵌入元素,因此为数据集中的每一行提供了一个重复的自由格式项。
在设计器中创建List时可以看到这一点:
我认为您的报告查询需要BatchID
并返回一些发票及其发票详细信息。我对您的数据采取了一些自由,并创建了一个简化的数据集示例:
您希望每个InvoiceNo
重复一次矩形。目前,Row Group没有分组项 - 在Group属性下将其更改为InvoiceNo
,并根据需要展开Rectangle。
您可以开始为“发票”级别项添加文本框等元素,例如:
请注意,Tablix的左侧已从行更改为括号 - 这是因为分组项已添加到行组。
这将为每个InvoiceNo
重复一次。现在我们要添加行项目 - 您可以通过将新表格拖动到矩形中来完成此操作。由于我们有一个Row Group,因此该表只显示该组中的项目:
当运行样本数据时,这会给出一个丑陋但功能重复的发票报告:
可以根据需要对其进行整理,并根据需要在“组”属性中的“组”项之间插入页组。
希望这至少可以让您大致了解如何完成任务。