Построитель отчетов 3.0 с ошибкой VS2010 - PullRequest
2 голосов
/ 14 апреля 2011

Я создал отчет с помощью построителя отчетов 3.0 и пытаюсь отобразить его в средстве просмотра отчетов в VS 2010. Я получаю это сообщение об ошибке.

Определение отчета недействительно. Подробности: Определение отчета содержит недопустимое целевое пространство имен 'http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition', которое не может быть обновлено.

Вот код, который я использую.

public partial class ViewReport : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if(!IsPostBack)
            PopulateReport(GetDataSet("24"), Server.MapPath("/IncidentReportOld.rdl"));
    }
    private DataSet GetDataSet(string id)
    {
        string sql = string.Empty;
        SqlDataAdapter ada;
        string conString = "Data Source=con-sqlc-02;Initial Catalog=Incident;Integrated Security=True";

        DataSet ds = new DataSet();

        sql = "select * from Rpt_Incident where incidentID = " + id;
        ada = new SqlDataAdapter(sql, conString);
        ada.Fill(ds, "Incidents");

        return ds;
    }

    private void PopulateReport(DataSet ds, string reportPath)
    {
        /* Put the stored procedure result into a dataset */

        if (ds.Tables[0].Rows.Count == 0)
        {
            //lblMessage.Text = "Sorry, no record returned in this report";
        }
        else
        {

            // Set ReportViewer1
            ReportViewer rv = new ReportViewer();
            rv.LocalReport.ReportPath = reportPath;
            ReportDataSource datasource;
            rv.LocalReport.DataSources.Clear();
            for (int i = 0; i < ds.Tables.Count; i++)
            {
                datasource = new ReportDataSource(ds.Tables[i].TableName, ds.Tables[i]);
                rv.LocalReport.DataSources.Add(datasource);
            }

            RenderPDF(rv);
        }
    }

    private void RenderPDF(ReportViewer rv)
    {
        Warning[] warnings;
        string[] streamids;
        string mimeType;
        string encoding;
        string extension;

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

        this.Page.Response.ClearHeaders();
        this.Page.Response.AddHeader("content-disposition", "inline; filename=IncidentTest.pdf");
        this.Page.Response.ClearContent();
        this.Page.Response.ContentEncoding = System.Text.Encoding.UTF8;
        this.Page.Response.ContentType = "application/pdf";

        BinaryWriter writer = new BinaryWriter(this.Page.Response.OutputStream);
        writer.Write(bytes);

        writer.Close();

        //flush and close the response object
        this.Page.Response.Flush();
        this.Page.Response.Close();
    }
    private void PopulateReport1(DataSet ds, string reportPath)
    {
        /* Put the stored procedure result into a dataset */

        if (ds.Tables[0].Rows.Count == 0)
        {
            //lblMessage.Text = "Sorry, no record returned in this report";
        }
        else
        {

            // Set ReportViewer1
            //ReportViewer rv = new ReportViewer();
            ReportViewer1.LocalReport.ReportPath = reportPath;
            ReportDataSource datasource;
            ReportViewer1.LocalReport.DataSources.Clear();
            for (int i = 0; i < ds.Tables.Count; i++)
            {
                datasource = new ReportDataSource(ds.Tables[i].TableName, ds.Tables[i]);
                ReportViewer1.LocalReport.DataSources.Add(datasource);
            }

            ReportViewer1.LocalReport.Refresh();
            //RenderPDF(rv);
        }
    }


}

Ответы [ 3 ]

6 голосов
/ 15 апреля 2011

Я сам смог решить эту проблему.

Я только что изменил расширение с RDL на RDLC. Затем я открыл его в VS, и VS спросил меня, хочу ли я преобразовать его. Я сказал да, тогда я получил это сообщение об ошибке.

Определение отчета содержит недопустимое целевое пространство имен 'http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition', которое не может быть обновлено.

Таким образом, я изменил пространство имен на это для SQL Reporting Services 2008.

<Report xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" xmlns="http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition">

После этого я получил сообщение о том, что «ReportSections» является недопустимым дочерним элементом. Я его убрал тогда все заработало! Надеюсь, это поможет кому-то еще в этом вопросе.

1 голос
/ 02 февраля 2012

Я исправил эту проблему в своем проекте winforms, изменив свойство Specific version с Microsoft.ReportViewer.Common и Microsoft.ReportViewer.WinForms на false в References

0 голосов
/ 01 мая 2014

У меня была такая же проблема, но ваше решение не сработало для меня.Я использую VS 2013 Express и используется для использования ReportBuilder 3.0.Я видел на форумах msdn, что использование ReportBuilder2.0 решит эту проблему, и они были правы.Поэтому попробуйте использовать построитель отчетов 2.0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...