14 Şubat 2014 Cuma

Veritabanı Ders Uygulamaları - 7

1 - Aşağıdaki veri tablosunu oluşturunuz. Veritabanı adı olarak bilsay tanımlayınız. Tablo adı da stok olacaktır.









2 - Form tasarımı olarak ekrana bir tane tabcontrol nesnesi yerleştiriniz. Tabcontrol nesnesinin tabpage özelliğinin içine giriniz. Açılan pencerede 0 numaralı tabpage ismini text özelliği ile Ana Ürünler, 1 numaralı tabpage ismini text özelliği ile Alt Ürünler olarak değiştiriniz.


3 - Sonuçta aşağıdaki gibi bir form tasarımı olacaktır.

4 - Her bir tabpage in içerisine bir tane datagridview yerleştiriniz. Bunun için form sayfasında Ana Ürünler seçili iken datagridview i getirip yerleştiriniz. Aynı şekilde Alt Ürünler seçili iken de datagridview i seçip yerleştiriniz. Bu durumda iki adet datagirdview i ekrana yerleştirmiş olduk. 

5 - Datagridvewlerin AutoSizeColumns özelliğini Fill olarak değiştiriniz. Bu sayede tablonun datagridview in içerisini tamamen kaplayacaktır. 

6 - Yine datagridviewin MultiSelect özelliğini False olarak değiştiriniz. Bu sayede datagridview üzerinde aynı anda ikinci bir seçim yapılması engellenecektir.

7 - Datagridiview üzerinde font özelliklerini değiştirmek için DefaultCellStyle özelliğine girip Yazı rengini mavi, yazı boyutunu 10 olarak değiştiriniz. Bunu her iki datagridview içinde gerçekleştiriniz.

8 - Kod kısmına geçelim... Aşağıdaki gibi bir metod ile datagridview i dolduralım...
void doldurdatagridview(DataGridView gelendgw, string sorgu, string tabloadi)
{
       // Bu kısma gelecek olan içeriği siz doldurunuz... Datagridview içerisine bilgiler gelecek kodu yazınız...
}
Metodumuzda tabloadı olarak tanımladığımız parametre ile biz da.Fill kısmında belirlenen tablo ismini vermiş oluyoruz... İki tane datagridview olduğu için de gelendgw adında bir parametre kullanıyoruz... 

9 - Formun load olayında Ana Ürünlerin görülebilmesi için aşağıdaki kodu yazınız...
doldurdatagridview(dataGridView1, "Select [Adı], Sum(Miktar) AS TOPLAM, Sum(Y_Miktar) AS KULLANIM, Sum(Kalan) AS KALAN From Stok Group By [Adı]", "anatablo");

İki tane datagridviewimiz olduğu için datagridviewlerin tablo isimlerini farklı kullandık... 1. de "anatablo", 2. de "alttablo" olacak şekilde kullanmış olduk. 

10 - TabControl nesnemizinde Selectindexchanged olayına aşağıdaki kodları yazıyoruz... Eğer Ana Ürünler tabpage mizde ise ona ait olan datagridview gösteriliyor. Yok eğer Alt Ürünler tabpagemizde ise bu durumda ona ait olan datagridview gösteriliyor... 
        private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
        {
if (tabControl1.SelectedIndex == 0)
    doldurdatagridview(dataGridView1, "Select [Adı], Sum(Miktar) AS TOPLAM, Sum(Y_Miktar) AS KULLANIM, Sum(Kalan) AS KALAN From Stok Group By [Adı]", "anatablo");
else if (tabControl1.SelectedIndex == 1)
       // Buraya gelmesi gereken kodları siz yazınız. Burada Tanım alanı üzerinden bilgiler verilecektir...
        }

11 - Sonuçta program çalıştığı zaman aşağıdaki görüntüler alınacaktır...










Örneğimizi bitirmiş olduk...

13 Şubat 2014 Perşembe

Veritabanı Ders Uygulamaları - 6

DataGridView içerisinde seçilmiş olan ürünün istediğimiz bilgilerini anında labellar üzerinde gösteren bir veritabanı uygulaması gerçekleştireceğiz... Uygulama sürecinde datagridview in üzerinde verilerin gösterilmesi olayının yanında aynı zamanda datagridview üzerinde seçim yapıldığında olan değişiklikleri de göreceğiz...

1 - Öncelikle bilsay adında aşağıdaki veritabanımızı hazırlıyoruz... Bunun içerisinde stok adında bir tablo oluşturuyoruz...









2 - Bu veritabanımızda kimlik alanı otomatik sayı olarak tanımlanacaktır... Bunun dışında diğer bilgilerin tanımlamaları zaten bellidir...

3 - Kullanacağımız veritabanını bin/debug klasörünün altına yerleştiriyoruz...

4 - Aşağıdaki form tasarımını gerçekleştiriyoruz...

















5 - Sağ taraftaki labelların içeriklerini de silerek her hangi bir şekilde uygulama açıldığında görünmesini engelliyoruz...

6 - Uygulamamız açıldığı zaman otomatik olarak ilk verinin içeriğini sağ tarafta göstermeyecektir. Ondan sonra datagridview üzerinde tıklanan her hangi bir verinin içeriğini de göstermeye başlayacaktır... RowEnter olayını kullansaydık otomatik olarak veriyi gösterecekti...

7 - Kod kısmına geçelim... baglanti ve komut değişkenlerimizi aşağıdaki örneğe benzer şekilde tanımlıyoruz...
OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data Source=okul.mdb");
OleDbCommand komut  = new OleDbCommand();

8 - Aynı zamanda datagridview de kullanacağımız dataset ve dataadapter değişkenlerimizi de tanımlıyoruz...
OleDbDataAdapter da; DataSet ds = new DataSet();

9 - Datagridviewde bilgilerin görünmesini sağlayacak olan bir metod tanımlıyoruz... Bu işlemi yaparken bir metoda sorgu işlemini gönderebileceğimiz bir string türünde bir parametre tanımlıyoruz... Aşağıdaki örneğe benzer bir yapıyı metod içerisinde oluşturuyoruz...
         baglanti.Open();
            komut.CommandText = "Select * From ogrenci Where Adı = 'CPU'";
            komut.Connection = baglanti;

            da = new OleDbDataAdapter(komut);

            da.Fill(ds,"Tablo");
            dataGridView1.DataSource = ds;
            dataGridView1.DataMember = "Tablo";
            baglanti.Close();

10 - Datagridview de değerler gösterilirken görünmesini istemediğimiz bazı alanlar var... Görünmesini istemediğimiz alanların aşağıdakine benzer bir örnekle metod içerisinde gizliyoruz...Kimlik, Kalan ve Dipnot alanlarını gizleyiniz...
dataGridView1.Columns["Ad"].Visible = false;

11 - Form load olayında datagridview i dolduracak olan sql komutunu metoda yolluyoruz... Bu sayede form açıldığı anda veritabanındaki bütün bilgiler datagridview içerisinde dolmuş olacaktır...

12 - Aşağıdaki datagridview olayını aktif hale getiriyoruz... Bundan sonra yazacaklarımızı bu kısmın içerisine yazacağız...
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

13 - Bu olayı kullanmamızdaki amaç tıklamış olduğumuz satıra ait olan kimlik numarasını bulmak... Çünkü kimlik numaralarını otomatik sayı olarak atadık ve hiçbir ürünün kimlik numarası bir diğeri ile aynı değil. Aşağıdaki komutu bu olayın içerisine ekliyoruz... 
kimlik= int.Parse(ds.Tables["Tablo"].Rows[e.RowIndex]["Kimlik"].ToString());

Yine aynı zamanda bilgileri labellar içerisinde görmek için birazdan tanımlayacağımız bilgileri goster metodunu da aşağıdaki gibi burada kullanıyoruz... 
bilgilerigoster(// Buradaki kısma alınan kimlik bilgisine ait veriyi  gönderecek olan bir sorgu yazınız);

14 - bilgilerigoster metodu ise sorguyu alacak olan bir parametre ile birlikte aşağıdakine benzer bir şekilde tanımlanacaktır...
baglanti.Open();
komut.CommandText = sorgu;
komut.Connection = baglanti;
OleDbDataReader oku = komut.ExecuteReader();
while (oku.Read())
            {
              label1.Text = oku["Adı"].ToString();
            }
oku.Close();
baglanti.Close();

15 - Programı çalıştırdığımızda aşağıdaki gibi bir çıktı oluşacaktır. Başlangıçta ekranda her hangi bir bilgi gözükmez iken daha sonra seçim yaparak labelları doldurmuş oluruz...











16 - Bu metod ile birlikte programı çalıştırdığımız zaman problem datagridview deki alan başlıklarına tıkladığımızda oluşan aşağıdaki hatadır.

Bu hatayı çözmek için farklı yöntemler vardır... Biz datagridview deki alan başlıklarının üzerine tıklama olayını cellclick olayına yazacağımız try-catch komutları ile önledik... Hata durumunda mesaj verdirmeden yoluna devam ettirmek için kodları try kısmına yazdık... Catch kısmına ise her hangi bir sıkıntı oluşmadığı için her hangi bir ekleme yapmadık...

17 - Form üzerinde her hangi bir alan başlığına tıklama yapıldığında ve daha sonra seçim yapıldığında da programda başka bir veriyi gösteriyor... Aşağıda görüldüğü gibi....











Bu sıkıntıdan kurtulmak için Form Load olayına aşağıdaki kodları ekledik... Bu sayede alan başlıklarına tıklama olayını ortadan kaldırmış oluyoruz... Tabii farklı yöntemler ile de bu sorun çözülebilirdi...
foreach (DataGridViewColumn x in this.dataGridView1.Columns)
                x.SortMode = DataGridViewColumnSortMode.NotSortable;

Bu haliyle programı bitirmiş olduk...