C# datagridview cell click olayı etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
C# datagridview cell click olayı etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

25 Şubat 2014 Salı

Veritabanı Ders Uygulamaları - 5

Update işlemine örnek oluşturacak olan bir çalışma yapacağız... Aşağıdaki form tasarımını gerçekleştiriniz... Text kutularının groupbox içerisinde olmasına özen gösteriniz... 

















Yine aynı şekilde aşağıdaki veritabanı tasarımını gerçekleştiriniz... Bu işlemi yaparken Kimlik değerini otomatik sayı olarak tanımlamayı unutmayınız... 













Çalışma sırasında tablodan seçmiş olduğumuz ürün bilgileri textlerde gösterilecek ve üzerinde değişiklik yapıldıktan sonra ürün düzenle butonuna basıldığı anda update komutu ile güncelleme yapılacaktır... 

1 - Veritabanı temel bağlantılarını ve da, ds değişkenlerini tanımlayınız...

2 - Aşağıdaki değişkenleri Global olarak tanımlayınız... 
        int kimliktasi = 0;            // Datagridview de seçili olan ürünün kimlik numarası...
      string urunad = "";         // Ürün bilgilerinin yedeğini almak için bu değişkenleri tanımladık... 
        string urunalt = "";
        string urunozellik = "";

3 - Datagridviewi dolduracağımız metodu aşağıdaki gibi hazırlayınız... 
void doldurdatagridview1()
        {
            ds.Clear();
            baglanti.Open();
            komut.CommandText = "Select * From yeniurun Order By [Adı]";
            komut.Connection = baglanti;

            da = new OleDbDataAdapter(komut);
            da.Fill(ds, "Tablo");
            dataGridView1.DataSource = ds;
            dataGridView1.DataMember = "Tablo";
            dataGridView1.Columns["Kimlik"].Visible = false; 
            baglanti.Close();
        }

4 - Veritabanında update işlemi yapacağımız metodu aşağıdaki gibi oluşturunuz...
void guncelleveritabanı(string sorgu)
        {
// Buradaki komutları siz doldurunuz... 
        }

5 - Güncelleme işlemleri sırasında ürünün daha önceki bilgileri ile aynı girilmesini engellemek için değerlerini değişkenlere alacağımızı söylemiştik... Bir metod ile datagridview de seçili olan ürünün bilgilerini urunad, urunalt ve urunozellik isimli değişkenlere alıyoruz... Bu işlem için aşağıdaki metodu kullanıyoruz...
void getir(string sorgu)
        {
            // Bağlantı ile ilgili giriş komutlarını doldurunuz...
            while (oku.Read())
            {
                    textBox1.Text = oku["Adı"].ToString();
                    textBox2.Text = oku["Tanım"].ToString();
                    textBox3.Text = oku["Özellik"].ToString();
                    urunad = textBox1.Text; urunalt = textBox2.Text; urunozellik = textBox3.Text;
            }
            // Bağlantı ile ilgili çıkış komutlarını doldurunuz... 
        }

7 - Form giriş olayında groupbox ı pasif duruma getiriniz... Bu sayede veri düzenleme işlemi yapılmasını engelleyelim... Aynı zamanda datagridview e bilgileri doldurunuz... 

8 - Datagridview in aşağıdaki olayını etkinleştiriniz...
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

9 - Bu olayın içerisinde groupbox ı aktif hale getiriniz... Aynı zamanda aşağıdaki satırlar ile hem kimlik numarasını alalım, hem de kimlik numarasına ait olan verileri değişkenlerimiz de saklayalım...
kimliktasi = int.Parse(ds.Tables["Tablo"].Rows[e.RowIndex]["Kimlik"].ToString());
// Burada getir metodu ile kimliktasi değerine göre sorgulama yaptırınız...

10 - En son olarak ürün düzenle butonun içerisine yazılacak olanlara bakalım... Öncelikle veri düzenleme yapmadan hem textlerin içerisinin dolu olduğunu hemde düzenleme yapılmadan geçilmemesi gerektiğini aşağıdaki gibi bir if ile yapalım... 
if (textBox1.Text == "" || textBox1.Text == urunad)
  MessageBox.Show("Yeni ürün adı giriniz...");
else if // Devamını siz doldurunuz...

11 - Bütün şart kontrolleri yapıldıktan sonra her hangi bir aksilik yok ise veritabanında güncellemeyi yapınız...
guncelleveritabanı("Update yeniurun Set [Adı]= '" + textBox1.Text.ToUpper() + "', [Tanım]= '" + textBox2.Text.ToUpper() + "',[Özellik]= '" + textBox3.Text.ToUpper() + "' Where [Kimlik]=" + kimliktasi); 

12 - Datagridview i yine bu buton içerisinde doldurunuz...

13 - groupboxı pasif hale getirerek ve textlerin içeriğini temizleyerek programı bitiriniz... 

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...