Bu yazımızda C# ile access veritabanındaki verileri datagridview‘ de görüntüleme ve eklenen datetimepicker kontrolleri ile veritabanı tablosundaki kayıtların seçilen iki tarihe göre DataGridViewde filtrelenmesini nasıl gerçekleştirilebileceğini gösteren basit bir örnek gerçekleştireceğiz.
Form tasarımımızı aşağıdaki gibi oluşturuyoruz.
Form yüklendiğinde kutuphane.mdb dosyası içinde bulunan ogrenci tablosu içindeki kayıtların datagridView içinde gösterilmesini sağlayalım.
Öncelikle gerekli namespace‘ i ekleyelim.
1 2 3 | using System.Data.OleDb; |
Daha sonra public olarak bağlantı için kullanacağımız nesneleri oluşturalım.
1 2 3 4 5 | OleDbConnection con; OleDbDataAdapter da; DataTable dt; |
Form_Load event’ı için aşağıdaki kodları yazalım.
1 2 3 4 5 6 7 8 9 10 11 12 | private void Form1_Load(object sender, EventArgs e) { con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=kutuphane.mdb"); da = new OleDbDataAdapter("SELECT ograd,ogrsoyad,dtarih,sinif FROM ogrenci",con); dt = new DataTable(); con.Open(); da.Fill(dt); con.Close(); dataGridView1.DataSource = dt; } |
Şimdi de sorgula butonuna basıldığında DateTimePicker ile seçilen iki tarih arasındaki verilerin çekilmesini sağlayan kodlarımızı oluşturacağız. Bu işlemi Between kullanarak gerçekleştireceğiz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | private void button1_Click(object sender, EventArgs e) //Filtreleme { con.Open(); string sql = "SELECT ograd,ogrsoyad,dtarih,sinif FROM ogrenci Where dtarih BETWEEN @tar1 and @tar2"; DataTable dt = new DataTable(); OleDbDataAdapter adp = new OleDbDataAdapter(sql, con); adp.SelectCommand.Parameters.AddWithValue("@tar1", dateTimePicker1.Value); adp.SelectCommand.Parameters.AddWithValue("@tar2", dateTimePicker2.Value); adp.Fill(dt); con.Close(); dataGridView1.DataSource = dt; } |
İşlem tamamlandı. Şimdi projemizi çalıştırarak ekran çıktısına bakalım.
merhaba arkadaşlar
ben visual basicte aynısını yapamadım
yardımcı olurmusunuz
Programda Başlangıç Tarihini seçerken 05.01.2018 tarihini seçtik diyelim ve o güne tarihe ait 5 kayıt olduğunu varsayalım veritabanımızda Bitiş tarihini de 06.01.2018 diye seçtiğimizde normalde filtreleme olması lazım ama başlangıç tarihini filtrelemeye almıyor hocam o tarihi filtrelemeye aldırmak için 04.01.2018 bir gün önceki günü seçmek gerekiyor onu nasıl düzeltebiliriz. Acil cevap bekliyorum çok teşekkür ederim.
Sorun saat kaynaklı. Örnekte başlangıç tarihinin set edildiği satırı aşağıdaki şekilde değiştirin.
adp.SelectCommand.Parameters.AddWithValue(“@tar1”, dateTimePicker1.Value.AddDays(-1));
Hocam hayırlı akşamlar kodlar çok güzel çalışıyor indirdim uyarladım programıma fakat başlangıç tarihi 10.01.2017 bitiş tarihide 10.01.2017 yapmak istiyorum bu tarihte 5 tane kaydım var başlangıç ve bitiş tarihleri aynı olunca o filtrelemeyide yaptırmak istiyorum yardımcı olabilirmisiniz teşekkürler.
Merhabalar böyle bir hata alıyorum yardımcı olabilirmisiniz ;
Unhandled exception has occurred in your application . İf you click Continue , the application will ignore this error and attemptto continue. if you clikc quit , the application will close immediately.
The connection was not closed. The connection’s current state is open.
Hatanın sebepi diyorki bağlantı kaptılmadı bağlantı durumu hala açık yani connection komutunuza göre baglanti isminden örnek vereyim baglanti.close(); ve baglanti.open(); ‘larına dikkat edin gereksiz açma kapama yapmadığınızdan emin olun iyi günler.
Merhaba
Bu projede şöyle bir hata alıyorum yardımcı olabilirmisiniz.
Unhandled exception has occurred in your application . İf you click Continue , the application will ignore this error and attemptto continue. if you clikc quit , the application will close immediately.
The connection was not closed. The connection’s current state is open.
aslında benim istediğim dataGridView de görüntülenen bir kolondaki tarih aralığını göstermek. yani filtrelemeyi veri tabanı bağlantısı yapmadan sadece datagridview üzerinde yapmak
çalıştırırken aşağıdaki hatayı alıyorum
Microsoft.ACE.OLEDB.12.0′ sağlayıcısı yerel makine kayıtlı değil.
http://www.yazilimkodlama.com/c-2/microsoft-ace-oledb-12-0%E2%80%B2-saglayicisi-yerel-makine-kayitli-degil-hatasi-cozumu/
merhaba
projemde access veri tabanı kullanıyorum. formumu açtığımda veriler form load tataki veri tabanı bağlatıları ile dataGridView e verileri çekiyorum. burada yaptırmak istediğim. Son bir ay ve son bir yıl şekliden radiobutton ile verileri datagridview e göstermek istiyorum.
yardımcı olabilirseniz sevinirim.
Merhaba bugünün tarihini almak için
DateTime.Now
kullanılır.
DateTime BirHaftaOncesi = DateTime.Now.AddDays(-7);
DateTime BirAyOncesi = DateTime.Now.AddMonths(-1);
DateTime BirYilSonrasi = DateTime.Now.AddYears(1);
Örnekte;
adp.SelectCommand.Parameters.AddWithValue(“@tar1”, dateTimePicker1.Value);
adp.SelectCommand.Parameters.AddWithValue(“@tar2”, dateTimePicker2.Value);
tarihleri dateTimePicker’dan almak yerine bu şekilde alabilirsiniz.
Veya bir metot tanımlayarak metoda bu verileri parametre olarak gönderebilirsiniz.
Aşağıdaki örneği inceleyebilirsiniz.
ÖRNEK