İpucu

Report Viewer "an error occurred during local report processing" hatası, Report Viewer a datasource ye erişemediği için aşağıdaki hata yı almış olabilirsiniz. Visual Studio 2012 de Report Viewer a datasource eklerken objectdatasource sayfaya otomatik eklenmiyor veya Visual Studio 2012 kendini kapatıyor olabilir, manuel olarak kaynağı Report Viewere bağlayamıyorsak, kod ile bağlayarak hatayı gideriyoruz.

 

protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                RaporAyarlar(ReportViewer1, "../dizin/rapor.rdlc","select * from tabloadı","DataSetRapor");
            }
        }

 

void RaporAyarlar(ReportViewer ReportV1, string dizin, string komut, string dataset)
        {
            ReportV1.ProcessingMode = ProcessingMode.Local; //Local de raporlama yapacaksak Local, uzak tan erişim için Remote
            ReportV1.LocalReport.ReportPath = Server.MapPath(dizin); //Rapor dosyasının dizini ni belirtiyoruz.
            DataSetRapor veri_rapor = GetData(komut); //Raporlamak istediğimiz tablo vb. belirtiyoruz. Metod bize data seti komuta göre işliyor ve  veri_rapor adında bir DataSetRapor kopyası oluşturuyoruz.
            ReportDataSource veri_alani = new ReportDataSource(dataset, veri_rapor.Tables[0]); //DataSetRapor adlı data seti, ReportDataSource ile ReportViewer e uygun kaynağı tanımlıyoruz.
            ReportV1.LocalReport.DataSources.Clear(); //Verileri ReportViewer e eklemeden önce, veri kaynaklarını siliyoruz. gereksiz kasma yapmaması için.
            ReportV1.LocalReport.DataSources.Add(veri_alani); //LocalReport olarak kaynak dosyasını ekliyoruz.
        }



        DataSetRapor GetData(string komut) //DataSetRapor datasetine return etmesi için DataSetRapor tipinde tanımlıyoruz.
        {
            string baglanti = ConfigurationManager.ConnectionStrings["baglanti"].ConnectionString.ToString();//web.config ten ConnectionString imizi alıyoruz ve string değişkenine atıyoruz. web.config kullanmıyorsanız direk bağlantı komutunu yazıyoruz.
            SqlCommand sql_komut = new SqlCommand(komut);

            using (SqlConnection baglan = new SqlConnection(baglanti))//baglantıyı oluşturuyoruz.
            {
                using (SqlDataAdapter sda = new SqlDataAdapter())//adapteri oluştuyoruz.
                {
                    sql_komut.Connection = baglan; //komut ile bağlantıyı sağlıyoruz.
                    sda.SelectCommand = sql_komut; //adapterin select (veri çekme) işlemi için SelectCommand ına komutu atıyoruz.
                    using (DataSetRapor ds_rapor = new DataSetRapor()) // DataSetRapor dan bir tane kopya oluşturuyoruz.
                    {
                        sda.Fill(ds_rapor, "RaporView"); //adapter DataSetRapor türettimiz ds_rapor' a verileri aktarıyor.
                        return ds_rapor; // türettimiz ds_rapor u geri döndürüyoruz.
                    }
                }
            }
        }


Resul Silay