Подтвердить что ты не робот

.rdlc Report - Невозможно создать устройство чтения данных для набора данных DataSet1.

Я создал .rdlc-Report в VS 2012, используя мастер отчетов и добавленный источник данных и набор данных. Когда я пытаюсь сделать отчет с использованием кода ниже, я получаю следующее сообщение об ошибке:

"Невозможно создать средство чтения данных для набора данных DataSet1."

bytes = localReport.Render("PDF", sdeviceinfo, out smimetype, out sencoding, out sfilenameextension, out streamids, out myWarnings);

Заранее благодарим за любые предложения!

4b9b3361

Ответ 1

У меня такая же проблема, что "Невозможно создать средство чтения данных для набора данных" zzz "

Ответ - ReportDataSource (строка xxx, DataTable yyy)

Вы должны использовать правильное имя. xxx должен быть zzz

Ответ 2

My 'gotcha' было обнаружением, что DataSet не совпадает с DataSet.

(Да, я понимаю, что на самом деле я принимаю это на публичном форуме, так как надеюсь, что кто-то еще может избежать этой глупой ошибки)

Ответ 3

Вы не можете создать ReportViewer и предоставить истинный набор данных. Возможно, вы получаете ошибку из-за метода предоставления параметров. Вы можете попробовать это. Я решил использовать этот способ.

   protected void btnPdf_Click(object sender, EventArgs e)
    {
    ReportViewer viwer = new ReportViewer();
    ObjectDataSource ob = new ObjectDataSource("dataset.YourTableAdapter", "GetData");
    dataset.YourTableAdapter ds = new dataset.YourTableAdapter();

    string PDF = "PDF";
    string ReportType = "ReportType";
    Warning[] warnings = null;
    string[] streamIds = null;
    string mimeType = string.Empty;
    string encoding = string.Empty;
    string extension = string.Empty;
    string filetype = string.Empty;



    viwer.SizeToReportContent = true;
    viwer.LocalReport.ReportPath = "reports/report/report.rdlc";
    viwer.ProcessingMode = ProcessingMode.Local;
    ob.SelectParameters.Clear();
    ob.SelectParameters.Add(QueryStringEnum.CompanyID, CurrentCompanyID.ToString());

    ReportDataSource rds = new ReportDataSource("datasetname", (object) ds.GetData((long?)CurrentCompanyID.ToInt64());

    viwer.LocalReport.DataSources.Add(rds);
    viwer.LocalReport.Refresh();

    byte[] bytes = viwer.LocalReport.Render("PDF", null,
     out mimeType, out encoding, out extension, out streamIds, out warnings);




}

Ответ 4

1) Убедитесь, что вы работаете в режиме администратора, и у вас есть доступ к серверу SSRS.

2) Убедитесь, что вы установили правильное имя набора данных или если вы правильно загрузили и назначили его.

Пожалуйста, проверьте этот образец в MSDN.

Удачи!

Ответ 5

Я решил проблему - моя ошибка кодирования - я опустил "правильные" значения параметров из кода aspx для SqlServerDataSource следующим образом:

Обратите внимание, что нет значения DefaultValue для параметра name= "p_CSV_VEHICLES"

И (оказалось), что два параметра (= "p_CSV_VGROUPS" и = "p_CSV_VEHICLES" ) не могли передать пустую строку "" в качестве значения по умолчанию - пустая строка недействительна в контексте выбора для этих два параметра.

После того, как я добавил DefaultValue и установил DefaultValue (s) на допустимые строковые значения для каждого параметра, отчет показал отлично в элементе управления ReportViewer на моей веб-странице.

Вот оригинальный (не работает) aspx-код.

     <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:FCI_WebMainConnectionString %>" 
        SelectCommand="uspRPT_CostDetailFleet" SelectCommandType="StoredProcedure">
        <SelectParameters>
           <asp:Parameter DefaultValue="5" Name="p_UID_DIVISION" Type="Int32" />
           <asp:Parameter DefaultValue="85" Name="p_UID_CUSTOMER" Type="Int32" />
           <asp:Parameter DefaultValue="FCIFLEETGRP" Name="p_SORT_ORDER" Type="String" />
           <asp:Parameter DefaultValue="" Name="p_CSV_VGROUPS" Type="String" />
           <asp:Parameter Name="p_CSV_VEHICLES" Type="String" />
           <asp:Parameter DbType="Date" DefaultValue="#01/01/2013#" Name="p_dtStart0" />
           <asp:Parameter DbType="Date" DefaultValue="#12/31/2013#" Name="p_dtEnd0" />
        </SelectParameters>
     </asp:SqlDataSource>

Ответ 6

Пожалуйста, проверьте правильность имени набора данных.

 reportDataSource = new ReportDataSource
    {
       Name = "DataSet1",// Check This Line. Are You Sure DataSet Name is Correct?
       Value = ListData 
    };

Ответ 7

У меня также была та же проблема. После моих наблюдений я обнаружил, что в отчетах RDLC нужен набор данных, либо он должен иметь в себе некоторые записи, либо пустой объект (пустой объект будет иметь метаданные)

Поэтому наилучшей практикой всегда является возврат набора данных с пустым объектом (не Null или nothing) или с некоторыми записями в нем.

Ответ 8

reportviewer1.LocalReport.DataSources.Add(New ReportDataSource("DataSet1", ObjectDataSource1))

лучше разместить свой код, как вы установите свой источник данных для отчета.

Ответ 9

Показ ошибки не может создать средство чтения данных для набора данных набора данных1:

private void frm_report_Load(object sender, EventArgs e)
{

    this.reportViewer1.RefreshReport();
    reportViewer1.LocalReport.Refresh();
    reportViewer1.LocalReport.DataSources.Clear();
    reportViewer1.LocalReport.ReportEmbeddedResource = "cruds_reports.Report1.rdlc";

    SqlCommand cmd = new SqlCommand("select * from tbl_info",con);
    SqlDataAdapter da = new SqlDataAdapter();
    DataSet ds = new DataSet();
    da.Fill(ds);
    DataTable dt = new DataTable();
    dt = ds.Tables[0];
    if (dt.Rows.Count>0)
    {
        rds = new ReportDataSource("DataSet1", dt);
        reportViewer1.LocalReport.DataSources.Add(rds);
        rds.Value = dt;
        reportViewer1.LocalReport.Refresh();
        reportViewer1.RefreshReport();
    }
    else
    {
        return;
    }

}

Ответ 10

enter image description here

enter image description here

Вы должны дать "DataSet1", иначе он не будет работать.

Ответ 11

Убедитесь, что эти две вещи в порядке:

1) в Report1.rdlc [Дизайн] (нажмите Alt + Ctrl + D):

Щелкните правой кнопкой мыши на наборе данных и добавьте набор данных,

в форме свойств набора данных выберите имя: DataSet1

нажмите кнопку Создать... рядом с комбинированным списком источников данных

нажмите на объект

на вашем проекте. выберите ваш список1 или...

и Готово.

Теперь выберите источник данных и Доступные наборы данных в выпадающих списках.

повторите эти шаги и создайте DataSet2...

нажмите OK и закройте форму.

2) в коде yourFormPrint:

    private void frmPrint_Load(object sender, EventArgs e)
    {
        CreateReport1();
        System.Drawing.Printing.PageSettings ps = new 
               System.Drawing.Printing.PageSettings();
        ps.Margins.Top = CentimeterToPixel(0.9);
        ps.Margins.Left = CentimeterToPixel(0.9);
        ps.Margins.Right = CentimeterToPixel(0.9);
        ps.Margins.Bottom = CentimeterToPixel(0.9);
        ps.Landscape = false;
        ps.PaperSize =new PaperSize ("A4", 827, 1169);
        ps.PaperSize.RawKind = (Int32)(System.Drawing.Printing.PaperKind.A4);
        //psize.RawKind = (int)PaperKind.A4;
        //ps.PaperSize = psize;
        reportViewer1.SetPageSettings(ps);
        this.reportViewer1.RefreshReport();
        this.reportViewer1.SetDisplayMode(DisplayMode.PrintLayout);
        WindowState = FormWindowState.Maximized;
    }
    private int CentimeterToPixel(double Centimeter)
    {
        int  pixel = -1;
        using (Graphics g = this.CreateGraphics())
        {
            pixel =Convert.ToInt32 ( Centimeter * (g.DpiY / 2.54));
        }
        return pixel;
    }
    private void CreateReport1()
    {
        reportViewer1.LocalReport.DataSources.Clear();
        reportViewer1.ProcessingMode = 
                     Microsoft.Reporting.WinForms.ProcessingMode.Local;


        reportViewer1.LocalReport.ReportEmbeddedResource = 
                        "yourProjectName.Report1.rdlc";
        ReportDataSource RDS = new ReportDataSource();
        RDS.Name = "DataSet1";
        RDS.Value = yourPublicList1;
        reportViewer1.LocalReport.DataSources.Add(RDS);

        ReportDataSource RDS2 = new ReportDataSource();
        RDS2.Name = "DataSet2";
        RDS2.Value = yourPublicList2;
        reportViewer1.LocalReport.DataSources.Add(RDS2);
    }