Ali AYDIN
msgbartop
Ali AYDIN'dan Yeni Bir Günce
msgbarbottom

26 Mar 12 Korumalı: Ders Notları Yakında Burada

Bu yazı parola korumalı. Yazıyı görmek için parolanızı girin:


07 Eki 09 Visual C# ile Windows Forms Projelerinde Microsoft ReportViewer Kullanmak

 

Visual C# ile Windows Forms Projelerinde Microsoft ReportViewer Kullanmak

Bloğumu barındırdığım firmayı değiştirdiğimden dolayı eski yazmış olduğum yazılar silindi.30 Mart tarihli Microsoft ReportViewer Kullanımı ile ilgili yazımı tekrar yayınlıyorum…

Bazı zamanlar projelerimizi geliştirdikçe göreceğiz ki verileri sadece ekranda göstermek yetmeyecektir. Bunu çıktı olarak kâğıda basma ihtiyacı doğacaktır. İşte böyle durumlarda rapor kullanmamız gerekecektir.

Peki, nasıl rapor oluşturabiliriz?

.Net ile rapor işi oldukça kolaylaşmıştır. (Eski C, Pascal günlerini hatırlayıp rapor için her şeyi kendimizin yaptığı düşünürsek artık işimiz daha basit.) Vs.Net kurulumuyla rapor için iki tane araç gelmektedir. Bunlar; ”Microsoft Report Viewer” ve “Crystal Report Viewer” ben bu yazımızda Microsoft Report Viewer ın kullanımından bahsedeceğim.

Şimdi gelelim Microsoft Report Viewer ı kullanarak basit bir rapor örneği yapmaya. Bunun için ilk önce Microsoft Sqlexpress de bir veri tabanı ve table oluşturalım. Table da ID(int), Numara(string), Ad(string), Soyad(string), Not1(int), Not2(int) alanları olsun. Şimdi de Visual C# .Net projemizi oluşturalım. Formumuza 2 tane buton 1 tanede dataGridView koyalım. Butonların birisiyle kayıtlarımızı dataGridView de göstereceğiz, diğeriylede hazırladıımız raporu görüntüleyeceğiz. Oluşturduğumuz veritabanından verileri çekmek için bir sınıf oluşturup kullanacağımız belirteçleri ve erişimcileri(get,set) yazalım. Daha sonra verileri listeye atarak geriye bu listeyi gönderen aşağıdaki gibi bir metot yazalım.

 

public static List<kayitlar> TumKayitlariGetir()
        {
            SqlConnection baglanti = new SqlConnection(ConfigurationManager.ConnectionStrings
                ["OgrenciConnectionString"].ConnectionString);
            SqlCommand komut = new SqlCommand();
            komut.Connection = baglanti;
            komut.CommandText = "select ID,Numara,Ad,Soyad,Not1,Not2 from OgrBilgi";
            baglanti.Open();
            SqlDataReader dtreader = komut.ExecuteReader();
            List<kayitlar> list = new List<kayitlar>();
            while (dtreader.Read())
            {
                kayitlar ogrenci = new kayitlar();
                ogrenci.OgrID= dtreader.GetInt32(0);
                ogrenci.OgrNo = dtreader.GetString(1);
                ogrenci.OgrAd= dtreader.GetString(2);
                ogrenci.OgrSoyad = dtreader.GetString(3);
                ogrenci.OgrNot1 = dtreader.GetInt32(4);
                ogrenci.OgrNot2 = dtreader.GetInt32(5);
                list.Add(ogrenci);

            }
            baglanti.Close();
            return list;
        }

Şimdi verileri dataGridimizde göstermek için 1. Butonumuzun click olayına aşağıdaki gibi yazalım.

 

private void btnListele_Click(object sender, EventArgs e)
{
// kayıtları dataGridView de gösteriyoruz.
dataGridOgrenci.DataSource = ogrenci.kayitlar.TumKayitlariGetir();
}

Şimdi sıra rapor oluşturma işine geldi. Bunun için projemizde sağa tıklayarak Add>New Item… diyoruz. Şekilde görülen pencere açılacaktır buradan “Report” u seçip istediğimiz ismi verdikten sonra Add butonuna basıyoruz.

Şimdi karşımıza bir tasarım(design) sayfası geldi. Report un özelliklerinde(properties) Sayfa boyutunu(pageSize), Kenar boşlukları (margins) gibi özellikleri ayarlayabiliriz. Default olarak A4 Kagıt boyutu(genişlik:21.0cm,yükseklik: 29.7cm) ve kenar boşlukları 2,5 cm şer (sol,sağ,üst,alt) gelmektedir.

Bu örnekte raporu liste şeklinde alacağız bunun için sol tarafta bulunan Araç Kutusundaki(toolbox) bulunan Report items daki table ı seçip ve raporun üzerine sürüklüyoruz. İlk olarak 3 satır 3 sütunluk bir tablo oluşuyor. Buradaki ilk satır Başlık(Header) satırıdır, ikinci satırımız Verileri listeleyeceğimiz satır (Detail) ve son olarak üçüncü satırımız da alt(footer) satırdır. Bu örnekte 3. Satırı kullanmayacağımızdan dolayı bu satırı siliyoruz. (Satırın başından satır işaretlenerek sağ tuş tıklanır ve Delete Rows seçilir) Şimdi veritabanımızı hatırlarsak bu alanlardan ID alanı hariç diğer alanları ve birde notların ortalamasını listeleyerek göstereceğiz. Bu yüzden bizim 6 sütuna ihtiyacımız var bunun için 3 tane daha sütun eklememiz gerekiyor. Bunu tablodan sütun seçilerek sağa tıklarız ve Insert Column to the Right/Left seçeneği ile yapabiliriz.

Başlık satırını 2 satır kullanacağımız için bir tanede başlık(header) satırı ekliyoruz ve Üstteki başlık satırını seçerek hücre birleştiriyoruz.(Sağa tıklayarak Merge Cells seçilir) Bu üst satıra başlığımızı yazıyoruz bu örnekte “Bilgi ve İletişim Teknolojileri Öğrenci Not Listesi” yazıyoruz. Bu tablodaki her hücre aslında birer textBox tır. Bu yüzden istenilen hücre seçilerek istenilen biçimi (hücre-textbox- genişliği (size), yazı tipi, boyutu, kenarlık özellikleri gibi ) özellikler (properties) penceresinden verebiliriz.

İstediğimiz biçimleri verdikten sonra şimdi sıra geldi verilerimizi raporda gerekli hücrelere koymaya bunun için önce Data Sources u açmamız gerekiyor. Bunu Data Menüsündeki ”Show Data Sources” ı tıklayarak yada klavyeden Shift+Alt+D tuşlarına basarak yapabiliriz. Data Sources penceresinde sağa tıklayarak Add New Data Sources diyoruz ve çıkan penceren Object seçeneğini seçerek devam ediyoruz. Buradan daha önce oluşturduğumuz sınıfı seçip işlemi tamamlıyoruz. Şimdi Data Sources penceresinde bizim oluşturduğumuz property ler gözükmekte bu property lerden istediğimizi tablomuzdaki detail satırındaki istenilen hücrelere sürüklüyoruz.

Şimdi gelelim Ortalama sütununa bu 2 notun nasıl ortalamasının yazılacağına. İlk önce ortalama sütununu seçip sağa tıklıyoruz. Buradan Expression seçeneğini seçip gelen pencereden Fields ı seçip yandaki field lardan yararlanarak “=(Fields!OgrNot1.Value+Fields!OgrNot2.Value)/2” formülü yazıyoruz..

Şuanda raporumuzun tasarımını bitirdik sıra geldi bunu form üzerinde göstermeye. Projemize bir form ekliyoruz ve formumuza Araç Kutusunda(toolbox) bulunan Microsoft Reporting Viewer ı sürüklüyoruz. Report Viewer Task da bulunan Choose Report dan tasarladığımız raporu seçiyoruz.

Oluşturduğumuz bu formun load olayına aşağıdaki gibi yazıyoruz.

 

private void frmYazdir_Load(object sender, EventArgs e)
  {    //Kayıtları binding source sa alıyoruz
        kayitlarBindingSource.DataSource = kayitlar.TumKayitlariGetir(yol);
        this.reportViewer1.RefreshReport();
  }

Son olarak projemizin başındaki ilk formumuzdaki 2. Butonun click olayında bu formu açıyoruz(show olayı).

Yazıda kullandığım örnek uygulamayıburadanindirebilirsiniz

Etiketler: , ,