筆記 - RDLC 處理報表時發生錯誤,無法建立資料集 'Dataset' 的資料讀取器。

  • 3006
  • 0

年紀大了,每過一段時間總是不記得 RDLC 的設定方法,總是出現,處理報表時發生錯誤,無法建立資料集 'Dataset' 的資料讀取器 的問題.  現在要好好記錄一下.

 

 

1. 報表 內 資料集 名稱, 例如: (資料來源是: dsClientMaster) (可用資料集是: ClientMaster) 則 名稱改為: dsClientMaster_ClientMaster ......不要問我點解..........

2. XXX.aspx 內 必需加入 ScriptManager , SqlDataSource,  ReportViewer 內ReportDataSource 的 DataSourcId ,及 Name 都要入正確資料.

<form id="form1" runat="server">
        <div>
   
            <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
                     
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:TMSConnectionString %>" >
    </asp:SqlDataSource>

            <rsweb:reportviewer runat="server" ID="ReportViewer1" >
                <localreport reportpath="Report1.rdlc">
                <DataSources>
                       

                       <rsweb:ReportDataSource DataSourceId="SqlDataSource1" 
                    Name="dsClientMaster_ClientMaster" />
                   
                </DataSources>
                </localreport>
                
            </rsweb:reportviewer>
        </div>
    </form>

如果報表內有2個或以上DataSet ,則加回有的DataSource 及 ReportDataSource.

<form id="form1" runat="server">
        <div>
   
            <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
                     
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:TMSConnectionString %>" >
    </asp:SqlDataSource>

    <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
        ConnectionString="<%$ ConnectionStrings:TMSConnectionString %>" >
    </asp:SqlDataSource>

            <rsweb:reportviewer runat="server" ID="ReportViewer1" >
                <localreport reportpath="Report1.rdlc">
                <DataSources>
                       

                       <rsweb:ReportDataSource DataSourceId="SqlDataSource1" 
                    Name="dsClientMaster_ClientMaster" />

                       <rsweb:ReportDataSource DataSourceId="SqlDataSource2" 
                    Name="dsUserMaster_UserMaster" />
                   
                </DataSources>
                </localreport>
                
            </rsweb:reportviewer>
        </div>
    </form>

3. 在 xxx.aspx.cs 內, 加入 SqlDataSource1.SelectCommand

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {


      
            SqlDataSource1.SelectCommand = "Select * FROM ClientMaster";
            
            this.ReportViewer1.LocalReport.Refresh();


        }
    }