Arkadaşlar Merhabalar.
Bugünkü yazımda reportwiever
nesnesinden bahsedeceğim. ReportViewer nedir ve ne işe yarar ? Bazen geliştirdiğimiz uygulamanın
sonucunda elde edilen veriler için raporlama ihtiyacını duyarız. Reportviewer bize
bu imkânı veren çok kullanışlı bir yapıdır. Elde edilen verileri raporlayan,
istediğiniz şekilde grafik olarak ekrana gösteren , verileri pdf ,excel gibi doküman
şeklinde almanıza olanak sağlayan ,
verilerinizi yazdırmanızı sağlayan bir yapıdır. Ama günümüzde daha çok crystal report tercih edilmesine rağmen ,
reportviewer de kullanılır.
Ben bu yazımda veritabanından verileri çekip raporlayan reportviewer den örnek bir uygulama yapacağım.Siz ihtiyacınıza göre kaynağı seçebilirsiniz.(2. resimde )
Ben bu yazımda veritabanından verileri çekip raporlayan reportviewer den örnek bir uygulama yapacağım.Siz ihtiyacınıza göre kaynağı seçebilirsiniz.(2. resimde )
NOT: Arkadaşlar bazı visual studio sürümlerinde
toolbox alanında reporting sekmesinin
altında reporviewer yok veya reporting sekmesi bulunmuyor.(genelde vs2015). Bunun
için yapmanız gereken
Denetim masası->program kaldır->visual
studio->kaldırmak yerine değiştire tıklayın->modify->sql server data
tools u bulup işaretleyin-> sonra update diyin. Yaklaşık olarak 117 mb lık bir
güncellemeden sonra visual studio yu yeniden açın. Toolbox sekmesinin altında
reporting alanı gelmiş olmalı.
Şimdi Başlayalım :
**Bir c# projesi açın
.Ben form aplication projesi açıyorum(web projesinde de kullanılabilir).Ve toolbox ta reporting sekmesinin
altında yer alan reportviewer i forma sürükleyip bırakın. Daha sonra resimde
görülen yere tıklayıp design new report diyin.
**Database i seçip next
diyin. Ondan sonra gelen ekranda Dataset i seçip next diyin.
**Dataseti seçip next dedikten sonra gelen ekranda , server
name(sql servera giriş yaparken kullandığınız) girin.Data source kısmı resimde ki gibi olacak.Sonra test connectiona tıklayın.Bağlantı başarılı ise database
adı için gerekli alan aktif olacaktır. Verileri çekmek istediğiniz database
adını yazın. Bilgileri girdikten sonra tekrar test connection diyin. başarılı ise ok
deyip devam ediyoruz.
**Bundan sonra gelen
ekrana nex diyip devam edin. Ondan sonra connection string ile alakalı bir ekran gelecek.
Yes kutucuğunu işaretleyip devam edin.
** Bağlandığımız veri
tabanındaki bilgiler ekrana gelecek. Oradan kullanmak istediğimiz tabloları
veya diğer şeyleri tik atıp finish ediyoruz. Ben Adrestype tablosunu
işaretledim.
**Böyle bir ekran
gelecek. Name alanında DataSete verdiğiniz adı unutmayın. Kod alanında
ihtiyacımız olacak. Next diyelim.
**Available field
alanında yazanları sürükleyip value alanına bırakalım. Bunlar bizim
kullanacağımız veriler. Yanlarında yer alan işarete tıklayarak işlemler de
yaptırabilirsiniz. Toplam , ortalama gibi .next diyelim
**Gelen choose layout
ekranında tablolarımız olacak. Next
diyelim.
**chose layout ekranından sonra choose
style ekranı gelecek. İstediğiniz seçip next diyin.
**Bundan sonra görüntü aşağıdaki
gibi olacaktır. Report1.rdlc formumuz
oluştu.
**Bu ekran üzerinde
sağ tıklayıp insert deyip çektiğimiz verileri istediğimiz tablo da veya grafikte
gösterebiliriz.
**Grafik eklediyseniz
eğer(ben tabloyu seçip ekledim) , sol tarafta dataset yazan alanda
ki tablolardan birini seçip , grafikte
hangi alanda görüntülenmesini istiyorsanız oraya sürükleyip bırakın.Bu şekilde grafikte nerede hangi verinin görüntülenmesini istiyorsanız ayarlayabilirsiniz
**Bundan sonra aşağıdaki gibi
reportviewer için hazırladığımız raporu kaynak olarak gösterelim.
**Artık Koda geçelim. Dataset
adını unutmayın demiştim.Burada kullanacağız.
Verileri çağırmak için yazdığım metod.
-> ile belirtrilen yerde birşey yapmanıza gerek yok.Aynı kalsa da olur.Oluşturduğumuz Report1.rdlc proje içerisinde olduğu için , gerekli yolu o şekilde gösterebiliririz
-> ile belirtrilen yerde birşey yapmanıza gerek yok.Aynı kalsa da olur.Oluşturduğumuz Report1.rdlc proje içerisinde olduğu için , gerekli yolu o şekilde gösterebiliririz
public void MyReport()
{
SqlConnection conn = new SqlConnection(@"Data Source=localhost;
Initial Catalog=AdventureWorks2014; Integrated Security=SSPI ");
conn.Open();
try
{
this.reportViewer1.Reset();
-> this.reportViewer1.LocalReport.ReportPath =
(Application.StartupPath + "\\Report1.rdlc");
DataTable tbl = new DataTable();
SqlDataAdapter adap = new SqlDataAdapter("SELECT * FROM
Person", conn);
adap.Fill(tbl);
ReportDataSource rds = new ReportDataSource("DataSet1", tbl);
this.reportViewer1.LocalReport.DataSources.Clear();
this.reportViewer1.LocalReport.DataSources.Add(rds);
this.reportViewer1.LocalReport.Refresh();
this.reportViewer1.RefreshReport();
}
catch (Exception ex)
{
MessageBox.Show("Hata oluştu:
" + ex.ToString());
}
}
bu olay altında
çağırıyorum metodumu.. Formun load olayında ise otomatik olarak ReportRefresh
olayının yer aldığını göreceksiniz. Bu oladyı için , formdaki ReporViewera tıklayın.Ona ait olaylar içerisinde ReportRefreshi bulup tıklayın...yada bunu kopyalayıp kullanabilirsiniz.
private void reportViewer1_ReportRefresh(object sender, CancelEventArgs e)
{
MyReport();
}
**Uygulamayı
çalıştırınca oluşan görüntü bu şekilde. Reportviewer üzerinde butonları
kullanarak pdf ,exel vb olarak alabilir veya yazıcıdan çıkarabilirsiniz.
Başka projeleri kaynak kodları ile beraber github adresim https://github.com/bhtyrsm da bulabilirsiniz.
Umarım
faydalı olmuştur .Kolay gelsin
raport vievde arama işlemi nasıl yapılır
YanıtlaSilFilter inc C# ReportViewer diye aratırsan bir çok görsel kaynak bulabilirsin
SilBu yorum yazar tarafından silindi.
YanıtlaSilreportviewer da design a new report kısmı bende gelmiyor sorun ne olabilir?
YanıtlaSilsql server data tool u kullandığın visual da yoksa eğer , visual studioya kurup güncelle. sonra tekrar dene ..En başta yazdığım yöntemi deneyebilirsin.
Silburayada bakabilirsin : https://msdn.microsoft.com/en-us/mt186501
Merhabalar,
YanıtlaSilReport Viewer Ile 10 Adet Parametre Kullanmak Istiyorum.
Parametre Tanimladigimda Tum Textbox' lar Uzerinde Deger Olmasi Gerekmektedir.
Ama Ben Belirttigim Veri Girdigim Textbox Ile Where Yapmak Istiyorum.
Bu Islemi Nasil Yapabilirim ?
Yanlış mı anladım bilmiyorum ama , zaten ReportParameter dizisi tanımlayıp ,textboxlardaki değerleri bu parametre dizisi üzerinden forma gönderiyorsun.Where den kasıt filtreleme ise , yani gönderdiğim parametrelere göre filtrelesin diyorsan
Silhttps://social.msdn.microsoft.com/Forums/en-US/766a216d-4b07-4139-8202-59d69322725d/how-to-filter-rdlc-report-data-using-parameter?forum=winforms
bu örneğe bakabilirsin
Bu yorum bir blog yöneticisi tarafından silindi.
Silburda bir örnek var.
Silhttps://www.codeproject.com/Questions/605365/ReportViewerplusandplusfiltering
bu tarz birşey işte
merhaba asp.net projemde bulunan reportviewer nesnesi kendi masa pc de çalışıyor fakat publish yapıp localde bulunan sunucuya attığım zaman hata alıyorum bunun nedeni nedir acaba
YanıtlaSilAldığın hata ne ? db ye mi erişemiyorsun.?
Sil