Dataset Raporlama (Crystal Report)

By gokhan, 21 Mart 2018

Bu yazıda bir dataset içerisindeki verilerin raporlanması anlatılacaktır. Dataset bir sorgu onucunda veritabanında seçilen verileri RAM üzerinde barındırmamızı sağlayan bir bileşendir. Otomasyonlarda sıklıkla sorgu sonuçlarını görüntülemek için kullandık. Daha önceki yazımızda Visual Studio platformunu nasıl raporlamaya hazırlayacağımızı anlattık.

BURADAN KONTROL EDEBİLİRSİNİZ

Dataset ile çekilen verileri raporda görüntülemek birçok yöntem mevcuttur. Bunlar içerisinde xml ile oluşturma ve DataTable nesnesi kullanma yer almaktadır. Bu derste DataTable nesnesi oluşturarak rapor oluşturmayı göreceğiz.
Öncelikle projemiz üzerinde sağ tıklıyoruz ve Add -> New Item seçiyoruz. Burada Dataset seçiyoruz.

Eklenen DataSet’e boş alana sağ tıklayarak DataTable Ekle diyoruz.


Oluşturulan DataTable Nesnesine sağ tıklayıp Add/Column yaparak sorgumuzda görüntüleyeceğimiz alanların tümünü ekliyoruz ve kaydediyoruz.

Daha önce anlatıldığı gibi projemiz üzerinde sağ tıklıyoruz ve Add -> New Item seçerek yeni bir Crystal Report Ekliyoruz.

Rapor oluşturma sihirbazından Proje Verileri\ADO.NET Veri Kümeleri \ Vt adı\ DataTable1 seçiyoruz. Geri kalan adımlar istediğiniz alanlara göre raporda gösterilecek biçimlerin seçilmesi ve gruplamaların yapılmasını kapsamaktadır.

Gerekli ayarları yaptıktan sonra raporun gösterileceği Formun Form_Load() olayına aşağıdaki kodları yazıyoruz.

[csharp]
OleDbCommand cmd;
OleDbConnection con;
OleDbDataAdapter da;
DataSet ds;

//Raporun crystalReportViewer görüntülenecek formu
rapor4 a = new rapor4();
con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=gokhan.accdb; ");
da = new OleDbDataAdapter("select * from satis where pID=5" , con);
//Sorgunuzu kendinize göre düzenleyebilirsiniz. Ben örnek verdim
con.Open();
ds = new DataSet1();
da.Fill(ds, "satis");
a.SetDataSource(ds.Tables[1]);
crystalReportViewer1.ReportSource = a;
crystalReportViewer1.Refresh();
[/csharp]

Bu durumda crdb-adoplus.dll hatası alacaksınız. Çözümü sonraki yazılarda anlatılacaktır.