【问题标题】:C# combining 2 reportsC# 合并 2 个报告
【发布时间】:2012-04-24 11:58:15
【问题描述】:

我有 2 个带有参数的查询。我可以让他们单独报告,但是我想要一份报告中的两个表格。问题是,子报表使用参数似乎有问题......我的 2 个查询是:

SELECT        A.Store_Number, A.GC_Sold, B.Total_Cars

FROM            (SELECT        Store_Number, COUNT_BIG(Quantity_Sold) AS GC_Sold

FROM            Invoice_Detail_Tb

WHERE        (Invoice_Date BETWEEN CONVERT(DATETIME, @startdate, 102) AND CONVERT(DATETIME, @enddate, 102)) AND (JLI_Category_Code = 'gc') AND (Invoice_Detail_Code LIKE 'jlgc%') AND (Invoice_Detail_Type = 'Item')

GROUP BY Store_Number) AS A INNER JOIN

(SELECT        Store_Number, SUM(Vehicle_Count) AS Total_Cars

FROM            Daily_Sales_Tb

WHERE        (Operations_Day BETWEEN CONVERT(DATETIME, @startdate, 102) AND CONVERT(DATETIME, @enddate, 102))

GROUP BY Store_Number) AS B ON A.Store_Number = B.Store_Number

这个输出给了我一个日期范围的数据,看起来像这样:

Store    gc sold      total cars
1        5             8
2        6             9
3        7             10

我的第二个查询是:

SELECT        A.Store_Number, A.GC_Sold, B.Total_Cars

FROM            (SELECT        Store_Number, COUNT_BIG(Quantity_Sold) AS GC_Sold

FROM            Invoice_Detail_Tb

WHERE        (Invoice_Date = CONVERT(DATETIME, @enddate, 102)) AND (JLI_Category_Code = 'gc') AND (Invoice_Detail_Code LIKE 'jlgc%') AND (Invoice_Detail_Type = 'Item')

GROUP BY Store_Number) AS A INNER JOIN

(SELECT        Store_Number, SUM(Vehicle_Count) AS Total_Cars

FROM            Daily_Sales_Tb

WHERE        (Operations_Day = CONVERT(DATETIME, @enddate, 102))

GROUP BY Store_Number) AS B ON A.Store_Number = B.Store_Number

此输出仅返回结束日期的数据。并且看起来与上表相同。

用户正在选择 Windows 窗体上的开始日期和结束日期并按下“开始”。然后将参数传递给报表查看器...有什么想法吗?

【问题讨论】:

  • 我想知道这个问题中 C# 的位置在哪里?
  • 你可以将query1 UNION ALL query2作为单个查询进行拍摄
  • 您可以将代码放入带参数的存储过程中,并返回一两个结果集,然后将数据放入报表视图中,无需将参数传递给报表
  • 这是我的 C# 代码,用于提取第一个查询的信息...如何让它们在 C# 中向同一个报告报告... this.DataTable1TableAdapter.Fill(this.JLI_DataDeliveryServiceDataSet. DataTable1,startdate.Value,enddate.Value); this.reportViewer1.RefreshReport();
  • 存储过程在使用参数的报表查看器中也是一团糟。

标签: sql reporting-services reporting


【解决方案1】:

如果这是一个 SQL Server Reporting Services 报表,那么您可以添加多个数据集。在您的情况下,第一个将使用第一个查询,第二个数据集将使用第二个查询,两个数据集使用相同的共享数据源(=> 数据库连接)。

然后您可以将两个表添加到报表中 - 一个引用第一个数据集作为其数据源,另一个引用第二个数据集。

同样可以为本地报告建模。

【讨论】:

  • 我收到错误:错误 1 ​​文本框“textbox1”的值表达式使用没有范围的聚合表达式。除非报告仅包含一个数据集,否则在数据区域之外使用的所有聚合都需要范围。
  • 这是使用第二个数据集。我需要在报表查看器的负载中调用它吗?也许它应该从哪里获取@enddate?
  • 我们谈论的是本地报告还是服务器端报告?在我们继续之前,我需要知道这一点。
  • 这是服务器端报告。用户必须有权访问网络,因为数据源是以这种方式引用的。
  • 最有可能出现错误消息是因为您 not(正如我在回复中所说)为文本框正确设置了数据源。您必须选择包含要显示的字段的数据集。
【解决方案2】:

您需要使用第二个查询创建另一个表适配器。设置下一个表格适配器后,您需要将表格添加到报表查看器。添加表格后,将字段从新表格适配器拖到表格中。完成此操作后,转到您的报表查看器控件,为您的新表分配数据集的绑定源,然后

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2018-11-21
    相关资源
    最近更新 更多