我正在尝试使用一个数据集中的两个数据表创建参数化报告,这是因为在第一个数据表中我获取所有记录并在页面加载事件上显示它但是当用户输入从日期和日期时参数和单击过滤器我希望报告更改为接收参数的其他数据表。
页面加载的内容是什么:
我使用此代码
完成了上述操作 if (Page.IsPostBack == false)
{
NetWeightIolaDataSet.Net_Weight_Tracking1DataTable table = new NetWeightIolaDataSet.Net_Weight_Tracking1DataTable();
NetWeightIolaDataSetTableAdapters.Net_Weight_Tracking1TableAdapter adpt =
new NetWeightIolaDataSetTableAdapters.Net_Weight_Tracking1TableAdapter();
adpt.Fill(table);
ReportDataSource rds = new ReportDataSource("NetWeightIolaDataSet_Net_Weight_Tracking1", table);
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.DataSources.Add(rds);
ReportViewer1.LocalReport.Refresh();
ReportViewer1.Visible = true;
}
如果我使用此代码并在报告中添加参数,我可以获取参数来处理报告:
//ReportParameter param = new ReportParameter("fromdate", fromdate.Text);
//this.ReportViewer1.LocalReport.SetParameters(new ReportParameter[] { param });
//ReportParameter paramm = new ReportParameter("todate", todate.Text);
//this.ReportViewer1.LocalReport.SetParameters(new ReportParameter[] { paramm });
但我不想这样做,而是我想通过数据集中的数据表将参数传递给报告然后分配它有一个源到报告,但当我这样做时,我得到这个错误:
A data source instance has not been supplied for the data source 'NetWeightIolaDataSet_Net_Weight_Tracking1'.
我的数据集:
所以在页面加载时使用没有参数的数据表显示所有数据,但是当提供日期范围并且单击过滤器按钮时,使用另一个数据表作为报告源:
这是从文本框传递值并使用参数
填充数据表的代码 NetWeightIolaDataSet.Net_Weight_TrackingDataTable table = new NetWeightIolaDataSet.Net_Weight_TrackingDataTable();
NetWeightIolaDataSetTableAdapters.Net_Weight_TrackingTableAdapter adpt = new NetWeightIolaDataSetTableAdapters.Net_Weight_TrackingTableAdapter();
adpt.Fill(table, DateTime.Parse(fromdate.Text), DateTime.Parse(todate.Text));
ReportDataSource rds = new ReportDataSource("NetWeightIolaDataSet_Net_Weight_Tracking", table);
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.DataSources.Add(rds);
ReportViewer1.LocalReport.Refresh();
ReportViewer1.Visible = true;
答案 0 :(得分:0)
所以我最终创建了一个存储过程,并说如果参数为null,那么给我所有记录,如果他们有值运行其他代码并且都创建了一个按钮并将其称为AllData,这将返回所有记录给用户at任何时间点。
Create PROCEDURE [dbo].[filter]
(
@mindate DateTime = NULL,
@maxdate DateTime = NULL
)
AS
BEGIN
IF ISNULL(@mindate,'')<>'' AND ISNULL(@maxdate,'')<>''
BEGIN
SELECT Date, MIN(Date) AS mindate,MAX(Date) AS maxdate, [Unit UPC Base Item], [Item (Optional)], [Preset Number], [Product Group], Shift, [Rotation Code], BBD, [Operator Name], Supervisor, [Production Line], [Bagger Number], [Start Time], [Stop Time], [Under Counts], [Label Wt on Pkg (g)], [Machine Tare Wt (g)], [Actual Tare Wt (g)], [Verify Target Wt (g)], [Total Count (Proper)], [Mean Gross (g)], [Rptd Mean Net (g)], [Std Dev (g)], [Max (g)], [Min (g)], [TNE (g)], Comments, Field1, Field2, Field3
FROM [Net Weight Tracking]
GROUP BY Date, [Unit UPC Base Item], [Item (Optional)], [Preset Number], [Product Group], Shift, [Rotation Code], BBD, [Operator Name], Supervisor, [Production Line], [Bagger Number], [Start Time], [Stop Time],
[Under Counts], [Label Wt on Pkg (g)], [Machine Tare Wt (g)], [Actual Tare Wt (g)], [Verify Target Wt (g)], [Total Count (Proper)], [Mean Gross (g)], [Rptd Mean Net (g)], [Std Dev (g)], [Max (g)], [Min (g)], [TNE (g)],
Comments, Field1, Field2, Field3
HAVING (MIN(Date) >= @mindate) AND (MAX(Date) <= @maxdate)
END
ELSE
BEGIN
SELECT Date, CONVERT(varchar(10), MIN(Date), 101) AS mindate, CONVERT(varchar(10), MAX(Date), 101) AS maxdate, [Unit UPC Base Item], [Item (Optional)], [Preset Number], [Product Group], Shift, [Rotation Code], BBD,
[Operator Name], Supervisor, [Production Line], [Bagger Number], [Start Time], [Stop Time], [Under Counts], [Label Wt on Pkg (g)], [Machine Tare Wt (g)], [Actual Tare Wt (g)], [Verify Target Wt (g)], [Total Count (Proper)], [Mean Gross (g)], [Rptd Mean Net (g)], [Std Dev (g)], [Max (g)], [Min (g)], [TNE (g)], Comments, Field1, Field2, Field3
FROM [Net Weight Tracking]
GROUP BY Date, [Unit UPC Base Item], [Item (Optional)], [Preset Number], [Product Group], Shift, [Rotation Code], BBD, [Operator Name], Supervisor, [Production Line], [Bagger Number], [Start Time], [Stop Time],
[Under Counts], [Label Wt on Pkg (g)], [Machine Tare Wt (g)], [Actual Tare Wt (g)], [Verify Target Wt (g)], [Total Count (Proper)], [Mean Gross (g)], [Rptd Mean Net (g)], [Std Dev (g)], [Max (g)], [Min (g)], [TNE (g)],
Comments, Field1, Field2, Field3
END
END
答案 1 :(得分:-2)
做这个有趣=&gt; ReportViewer1.LocalReport.DataSources.Clear();
之前没有
像那样
ReportViewer1.LocalReport.DataSources.Clear();
ReportDataSource("NetWeightIolaDataSet_Net_Weight_Tracking", table);