Son Haberler
Anasayfa / Yazılım / C# / Öğrenci Otomasyonu Bölüm 6

Öğrenci Otomasyonu Bölüm 6

Gelelim arama yapmaya. Veritabanımda yer alan OgrenciBilgiler tablosunda Ad ve Soyada göre arama yapıp, eğer aradığım şekilde kayıt mevcut ise buna ilişkin diğer bilgilerin listelenmesini sağlayacağım. Arama esnasında ara kutucuklarının boş geçilmesi durumunda da kullanıcıyı uyarmak istiyorum. Öncelikle tasarım ile işimize başlayalım. Visual Studio da proje adıma sağ tıklıyorum ve add > windows form diyorum. Burada form adını frmKayitAra.cs yaptım. Hemen formumun backcolor özelliğini Highlight yapıyorum, Text Özelliğini de Kayıt Arama şeklinde düzenliyorum.

Şimdi ada soyada göre arama yapacağım dolayısı ile kişi ad soyad bilgilerini girmek için bir textbox’a ihtiyacım var, kullanıcıyı bu konuda bilgilendirecek bir label ve kaydımı görüntülemek içinde DataGridView kontrolüne ihtiyacım var. Tabi birde buton kontrolüm olması gerekiyor arama yapabilmek için. Eklediğim Textbox kontrolünün adını txtAdSoyadAra şeklinde düzenledim. Eklediğim buton kontrolünün de adını btnAra, text özelliğini de Ara şeklinde değiştirdim. Şimdi bir de DataGridWiev ekliyorum. Bunun da adı dgwievAra olsun. Böylelikle formun tasarım işi bitti. Tasarımım ile birlikte formum aşağıdaki halini aldı.

 

20150920_01

Şimdi ana formumuzda yer alan Kayıt Arama butonuna tıklandığında bu formumuzu açan kodlarımızı yazalım. Bunun için ana forma geri dönüyoruz ve Kayıt Arama yazan butona çift tıklayıp click eventine aşağıdaki kodları yazıyoruz.

private void btnKayitAra_Click(object sender, EventArgs e)
{
frmKayitAra frm = new frmKayitAra();
frm.Show();
}

 

Şimdi yine son oluşturduğum frmKayitAra formuma geri dönüyorum. Burada yer alan ARA butonumun click eventine aşağıdaki kodları yazacağım. Buraya veri girilmediği anda kullanıcının uyarılmasını da istiyorum.

 private void btnAra_Click(object sender, EventArgs e)
{
//Textbox içine veri girilip girilmediğini kontrol ediyorum.
if (txtAdSoyadAra.Text == "")
{
MessageBox.Show("Lütfen bir ad ve soyad giriniz", "Kayıt Arama", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}

else
{
//buraya metodumun adını yazıyorum.
KayitArama();
}
}

Şimdi metodumuzu yazalım. Üstteki kod bloğumda KayitArama() şeklinde bir metod adı yazdım. Bu metod ile amacım veritabanına bağlanarak OgrenciBilgiler tablosunda formumda yer alan textbox içinde yer alan veri var mı yok mu arama yaptırmak istiyorum. Aslında burada da bir nevi kayıt listeleme işlemi yapıyorum. Tabi Kayıtları Listelerken veri tabanında ilgili tabloda tüm verileri listeledik. Burada ise amacımız aranan kayıtları listelemek. Şimdi metod kodlarımıza geçelim:

 public void KayitArama()
{
//veritabanıma bağlanıyorum
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + Application.StartupPath + ("/OgrenciOtomasyonu.accdb"));
//Bağlantımızı açıyoruz.
conn.Open();

//ds isminde bir dataset oluşturuyorum
DataSet ds = new DataSet();
//adt isminde bir OleDbDataAdapter oluşturuyorum
OleDbDataAdapter adt = new OleDbDataAdapter("SELECT * FROM OgrenciBilgiler WHERE (AdSoyad LIKE '%" + txtAdSoyadAra.Text + "%')", conn);
//ds isimli dataset nesnesini tablo ile dolduruyorum
adt.Fill(ds, "OgrenciBilgiler");
//dgwievAra adlı datagridview kontrolümün DataMember özelliğini OgrenciBilgiler isimli tabloya eşitliyorum
dgwievAra.DataMember = "OgrenciBilgiler";
//dgwievAra adlı datagridview kontrolümün DataSource özelliğini ds nesnesine eşitliyorum
dgwievAra.DataSource = ds;
adt.Dispose();
conn.Close();
}

Arama işlemim bitti, şimdi gelelim silme işlemine. Burada da TC kimlik no girdiğimiz kaydı öncelikle listeleyeceğiz ve ardından eğer silmek istediğimiz kayıt ise silme işlemini yapacağız. Formumu tasarlayayım, aynı frmKayitAra gibi bir form olacak zaten. Projeme sağ tıklıyorum ve yeni bir windows form ekliyorum, adını frmKayitSil verdim, text özelliğini de Kayıt Silme olarak düzenledim. Arka plan rengini yani BackColor özelliğini de Highlight yapıyorum.

Daha sonra bir adet Label kontrolü ekliyorum, kullanıcıya bilgi vermek için kullanacağım. Text özelliğini TC Kimlik Numarasını Giriniz: şeklinde yazıyorum. Şimdi gelelim bir adet MaskedTextBox eklemeye, adını mskTxtTcKimlikNo veriyorum. Daha sonra bu kontrolümün üst sağında yer alan oku tıklıyorum ve buradan maskeleme türümü seçiyorum. Digit tipinde seçtim. Mask kısmına 11 tane sıfır yazdım. Böylelikle 11 tane rakam girilmesini ve bunun haricinde veri girilmemesini sağlamış oluyorum.

 

20150920_02

Şimdi bir de Silme işlemi için buton eklemem gerekiyor. Adını btnSil, Text özelliğini ise Sil şeklinde düzenliyorum. Daha sonra bir adet DataGridView ekliyorum. Adını dgViewSil verdim. Ve tasarımım aşağıdaki halini alıyor.

20150920_03

Şimdi ana formum üzerinden buraya ulaşabilmek için ana formumda yer alan Kayıt Silme butonuna çift tıklıyorum ve bu butonun Click eventine bu formun açılması için gerekli olan kodlarımı aşağıdaki şekilde yazıyorum.

 private void btnKayitSil_Click(object sender, EventArgs e)
{
frmKayitSil frm = new frmKayitSil();
frm.Show();
}

 

Şimdi bu form açıldığında textbox’a bir TC kimlik numarası girdiğimde hemen DataGridView kontrolüm üzerinde ilgili kaydın gelmesini istiyorum. Dolayısı ile bu sefer metin kutusu üzerinde bir olaya bu kodları yazmalıyım, bu olay da TextBoz kontrolümün Leave olayı oluyor. Bu Leave olayı içinde database’den SELECT sorgusu ile birlikte TC Kimlik No şartına göre verinin de listelenmesini DataGridView kontrolüm üzerinde gerçekleştireceğim. Kodlarımızı yazalım şimdi, Textbox kontrolümü seçiyorum ve sağda yer alan özellikle alanında event bölümünden Leave olayını seçiyorum ve çift tıklayarak ilgili kod bölümümü açıyorum.

20150920_04

Veri tabanı işlemleri yapacağım için bu kod sayfamda üstte yer alan kütüphane alanına;  using System.Data.OleDb; kütüphanesini ekliyorum.

private void mskTxtTCKimlikNo_Leave(object sender, EventArgs e)
{
//Veritabanım ile bağlantımı oluşturuyorum.
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + Application.StartupPath + ("/OgrenciOtomasyonu.accdb"));
//Bağlantıyı açıyorum
conn.Open();
//ds isimli bir dataset oluşturuyorum.
DataSet ds = new DataSet();
//adt adında bir OledbDataAdapter oluşturuyorum.
OleDbDataAdapter adt = new OleDbDataAdapter("SELECT * FROM OgrenciBilgiler WHERE TC_Kimlik_No = '" + mskTxtTCKimlikNo.Text + "'", conn);
//ds isimli dataset nesnemi OgrenciBilgiler isimli tablo ile dolduruyorum.
adt.Fill(ds, "OgrenciBilgiler");
//DataGridView kontrolümüzün DataMember özelliğini OgrenciBilgiler isimli tabloya eşitliyorum
dgViewSil.DataMember = "OgrenciBilgiler";
//DataGridView kontrolünün DataSource özelliğine data nesnesine eşitliyorum
dgViewSil.DataSource = ds;
adt.Dispose();
//Bağlantımı kapatıyorum
conn.Close();
}

Bu kod ile silmek istediğim kaydı görüntüledim. Eğer silmek istediğim kayıt bu ise şimdi SİL butonuna tıkladığımda silme işleminin yapılşmasını istiyorum. Tabi şöyle bir detayı hatırlatmakta fayda var. Özellikle bir veritabanından veri silme işlemlerinde kullanıcıya ilgili kaydı silip silmek istemediği hususunda soru sorulması faydalı olacaktır. Böylelikle yanlışlıkla veri silmenin önüne geçilebilir.Veri silindikten sonra verinin silindiğini de görmek için onay işleminin ardından DataGridView kontrolüm üzerinde kalan tüm verileri listeleyeceğim.

Şimdi bu işlemleri yapan kodlarımızı yazalım. Bu kodlarımızı da sil butonunum Click eventine yazıyoruz.

 private void btnSil_Click(object sender, EventArgs e)
{
DialogResult dr;
dr = MessageBox.Show("İlgili kaydı silmek istediğinizden emin misiniz? Silme işlemi sonucunda öğrenci bilgileri tamamen silinecektir.", "Kayıt Silme", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);

if (dr == DialogResult.Yes)
{
//veritabanım ile bağlantı oluşturuyorum
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + Application.StartupPath + ("/OgrenciOtomasyonu.accdb"));
//Bağlantıyı açıyorum
conn.Open();
//ds isimli bir dataset nesnesi oluşturuyorum
DataSet ds = new DataSet();
//Seçilen kaydın her iki tablodan da silinmesini sağlıyorum, INNER JOIN kullanıyorum
OleDbCommand KayitSil = new OleDbCommand("DELETE OgrenciBilgiler.*, OgrenciNotlar.* FROM OgrenciBilgiler INNER JOIN OgrenciNotlar ON OgrenciBilgiler.TC_Kimlik_No = OgrenciNotlar.TC_Kimlik_No WHERE OgrenciBilgiler.TC_Kimlik_No =" + "'" + mskTxtTCKimlikNo.Text + "'", conn);
//oluşturulan sorguyu çalıştırıyorum
KayitSil.ExecuteNonQuery();
ds.Clear();
OleDbDataAdapter adt = new OleDbDataAdapter("SELECT * FROM OgrenciBilgiler", conn);
//ds isimli dataset nesnemi OgrenciBilgiler isimli tablo ile dolduruyorum
adt.Fill(ds, "OgrenciBilgiler");
//DataGrivView kontrolümün DataMember özelliğini OgrenciBilgiler tablosuna eşitliyorum.
dgViewSil.DataMember = "OgrenciBilgiler";
//DataGridView kontrolümün DataSource özelliğini ds adlı dataset nesneme eşitliyorum.
dgViewSil.DataSource = ds;
MessageBox.Show("Kayıt silme işlemi başarı ile gerçekleştirilmiştir");
KayitSil.Dispose();
adt.Dispose();
//bağlantımı kapatıyorum
conn.Close();
}
}

Proje burada bu hali ile son buluyor.

 

2 yorum

  1. hocam şu raporlamanın kodunu verebilir misiniz

  2. Size Soru sorabileceğimiz , yardım isteyebileceğimiz bir e-mail adresi var mı?
    İletişim ve Soru ile ilgili bir kısım göremedim sayfanızda.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir