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ı.
Ş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.
Ş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.
Ş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.
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.
21_09_2015_Ogrenci_Otomasyonu
hocam şu raporlamanın kodunu verebilir misiniz
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.
Eger Elinizde mevcut ise raporlama sayfasının kodlarını atarmısınız ?
hocam programı açamıyorum acıl yardım edebilir misinşz odev olarak vereceğim