2015-10-26 108 views
1

我試圖創建一個參數化的報告,使用一個數據集中的兩個數據表,這是因爲在第一個數據表中,我獲取所有記錄並將其顯示在頁面加載事件,但是當用戶輸入日期和日期參數並單擊過濾器時,我希望報告更改爲接受參數的其他數據表。未提供數據源實例的數據源rdlc報告

在頁面加載什麼appreas:

enter image description here

我完成了上面這段代碼

 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'. 

我數據集:

enter image description here

所以頁面加載顯示器上使用的數據表不帶參數,但所有數據時的日期範圍被設置,並且當過濾器按鈕被點擊使用其他的數據表作爲報告源:

這是從文本框傳遞值和填充在數據表與參數代碼:

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

所以我結束了創建一個存儲過程,並表示,如果參數爲空,然後給我的所有記錄,如果他們有價值的運行其他代碼,並且都創建了一個按鈕並將其稱爲AllData,這將在任何時間點將所有記錄返回給用戶。

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 
-2

做這個有趣的=>ReportViewer1.LocalReport.DataSources.Clear();前不後 像

ReportViewer1.LocalReport.DataSources.Clear(); 
ReportDataSource("NetWeightIolaDataSet_Net_Weight_Tracking", table);