23 Şubat 2014 Pazar

WPF DataGrid 2


Bu WPF ile altıncı uygulamamız. Bir önceki uygulamamızda DataGrid ile MS Access bağlantısını kurup pratik kodlarla( sql sorgu cümleleri kullanmadan) verilerimizi DataGrid e aktarmııştık. Bu yazımızda ise sql sorgu cümleleri kullanarak birden fazla tabloda nasıl sorgu yapıyoruz  ve tarih sorgularını ne şekilde gerçekleştiriyoruz bunlara göz atacağız.

Öncelikle veritabanım aşağıdaki gibi Kimlik ve no sütunları ile birbirlerine bağlantılı durumda. Yeni bir proje oluşturarak projeme MS Access veritabanımı ekliyorum.



                Projemi oluşturduktan sonra pencereme DataGrid i sürükleyip bırakıyorum ve istediğim ölçülerde boyutunu ayarlıyorum.  Daha sonra Xaml kısmına DataGrid etiketi içerisine aşağıdaki gibi ItemSource kodunu ekliyorum. Eğer bunu eklemezsek kod kısmı hatasız olsa da verilerimiz DataGrid e aktarılmayaaktır. Ayrıca DataGrid e isim vermeyi de unutmayalım.

<DataGrid ItemsSource="{Binding}"  ... />

                Şimdi  C# kısmına geçerek kodlarımızı eklemeye başlayalım. Öncelikle gerekli olan kütüphanelerimizi ekleyelim.

using System.Data;
using System.Data.OleDb;

public partial class MainWindow : Window
{
    DataSet set;
    OleDbDataAdapter adapter;
    OleDbConnection con;
    public MainWindow()
    {
        InitializeComponent();
    }
}

                Yukarıdaki gibi set ( verileri tutar ) , adapter (sorgu cümlesi ile bağlantıyı tanımlar) ,con ( bağlantıyı kurar ) tanımladık. Şimdi de MS Access in yolunu tanımlayalım ve bağlantıyı kuralım.

public MainWindow()
{
    InitializeComponent();

    string yol = Properties.Settings.Default.KitaplıkConnectionString;
    try
    {
        con = new OleDbConnection(yol);
    }
    catch
    {
        MessageBox.Show("Bağlantı Hatası!");
    }
    getKitap();
 }

                Burada olduğu gibi yolu kolay bir şekilde ayarlayabiliyoruz.  Daha sonra ise try-catch ile bağlantının hata verip vermediğini kontrol ediyoruz. Bundan sonra verilerimizi DataGrid e aktarmak için getKitap()  adında bir fonksiyon tanımlıyorum ve aşağıdaki gibi kodlarımı yazıyorum.

private void getKitap()
{
    string sorgu = "select * from Kitaplar inner join Tarihler on Kitaplar.Kimlik=Tarihler.no";
    string sorgu2 = "select * from Kitaplar,Tarihler where Kitaplar.Kimlik=Tarihler.no";
    adapter = new OleDbDataAdapter(sorgu, con);
    set = new DataSet();
    con.Open();
    adapter.Fill(set, "Kitaplar");
    con.Close();
    datagrd.DataContext = set.Tables[0];
}

                Yukarıdaki kodda iki tane sorgu cümlesi var ve ikisi de tablolarımın tek tablo olarak getirilmesini sağlıyor. İki sorgu cümlesi de aynı işi yapar. Bu kodlar sonucunda aşağıdaki gibi verilerim DataGrid aktarılmış olacaktır. Eğer birden fazla tabloda sorgu yapacaksak inner join,joining konularına göz atmamızda fayda vardır.



                Şimdi de tarih sorgusu yapalım. Bunun için Xaml kısmına bir DatePicker  ve hemen altına bir tane daha DataGrid ekliyorum. Amacım seçili tarihteki kayıtlı bulunan kitapların listelenmesi.
                Bu işlem için DatePicker ı ekledikten ve isim verdikten sonra seçili iken properties kısmından Event sekmesinden SelectedDateChanged kısmana çift tıklayarak fonksiyon oluşturuyorum ve aşağıdaki gibi kodlarımı ekliyorum.

private void DatePicker_SelectedDateChanged_1(object sender, SelectionChangedEventArgs e)
{
    DateTime time = date.SelectedDate.Value.Date;
    string sorgu3 = "select * from Kitaplar inner join Tarihler on  Kitaplar.Kimlik=Tarihler.no where Tarihler.tarih=#" + time.Day + "/" + time.Month + "/" + time.Year + "#";
    set = new DataSet();
    adapter = new OleDbDataAdapter(sorgu3, con);
    con.Open();
    adapter.Fill(set, "Kitaplar");
    con.Close();
    grd2.DataContext = set.Tables[0];
}

                Tarih sorgularında sorgu cümlelerinde sorguların başına “#” koymayı unutmayalım yoksa program hata verir veya istediğimiz şekilde sonuç üretmez.




                Sütunları nasıl istediğimiz gibi düzenleyebileceğimizi ve seçili satırdaki sütun bilgilerine nasıl ulaşacağımıza bir önceki yazımıza aşağıdaki linke tıklayarak ulaşabilirsiniz. Ayrıca uygulamayı diskten paylaşıyorum isteyenler indirip göz atabilirler. Bir sonraki yazımızda ise ekleme , silme ve güncelleme işlemlerine değineceğiz. 


WPF DataGrid


database2

0 yorum:

Yorum Gönder