Formdaki combobox üzerinden vade tarihi geçmiş ve vade tarihi geçmemiş verileri listviewde nasıl listeleyebilirim.
Vb.net günü geçmiş ve geçmemiş verileri listele
Öncelikle Listview yerine DataGridView kullanmanızı tavsiye ederim. Şu anki örnek üzerinden çözümü sunacağım ama tekrar diyorum ListView kullanmayın
Öncelikle Listeleme kodlarınızı Load içine değil ayrı bir prosedür içerisine taşıyalım. Bu şekilde yapmaya alışın ki aynı kodu farklı noktalarda defalarca kullanabilirsiniz.
Benim değişiklik yaptığım yerler :
Listele prosedürünü çalıştırınca combobox içinde hangi index seçili ise ona göre Sql cümlemiz değişmiş olacak.
Load olayının kodları artık şu şekilde olmalı:
Ayrıca combobox içindeki seçim değiştikçe ListView içindeki verilerin de değişmesi gerek. Bunun için combobox'ın SelectedIndexChanged olayına yine Listele() yazarak listedeki verilerimizi yenilemiş olacağız.
Kodlarınızı incelemedim yanlış veya doğru varmı diye. Ayrıca kendi yazdığım Sql cümlesinde < ve >= vb. işaretleri kontrol etmeden ekledim. Siz gerekli kontrolleri yaparsınız.
Bu arada veritabanı olarak Access kullanmamanızı tavsiye ederim. En kötü ihtimalle SqlCompact kullanın.
Öncelikle Listeleme kodlarınızı Load içine değil ayrı bir prosedür içerisine taşıyalım. Bu şekilde yapmaya alışın ki aynı kodu farklı noktalarda defalarca kullanabilirsiniz.
Private Sub Listele()
Dim baglanti As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='kayıt.mdb'")
baglanti.Open()
Dim sqlCumle As String
Dim takla As Date = DateTime.Today.ToShortDateString
If (ComboBox100.SelectedIndex = 0) Then
sqlCumle = "select * FROM [Kayitlar] WHERE [VADETARİHİ] < #" & takla.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture) & "#"
Else
sqlCumle = "select * FROM [Kayitlar] WHERE [VADETARİHİ] >= #" & takla.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture) & "#"
End If
Dim komut As New OleDbCommand(sqlCumle, baglanti)
Dim oku As OleDb.OleDbDataReader
oku = komut.ExecuteReader()
ListView1.Items.Clear()
While oku.Read()
With ListView1.Items.Add(oku("TckimlikNo"))
.SubItems.Add(oku("AdiSoyadi"))
.SubItems.Add(oku("BabaAdi"))
.SubItems.Add(oku("VADETARİHİ"))
End With
End While
baglanti.Close()
End Sub
Benim değişiklik yaptığım yerler :
Dim sqlCumle As String
Dim takla As Date = DateTime.Today.ToShortDateString
If (ComboBox100.SelectedIndex = 0) Then
sqlCumle = "select * FROM [Kayitlar] WHERE [VADETARİHİ] < #" & takla.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture) & "#"
Else
sqlCumle = "select * FROM [Kayitlar] WHERE [VADETARİHİ] >= #" & takla.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture) & "#"
End If
Dim komut As New OleDbCommand(sqlCumle, baglanti)
Listele prosedürünü çalıştırınca combobox içinde hangi index seçili ise ona göre Sql cümlemiz değişmiş olacak.
Load olayının kodları artık şu şekilde olmalı:
ComboBox100.Items.Add("Günü geçmiş")
ComboBox100.Items.Add("Günü geçmemiş")
Listele()
Ayrıca combobox içindeki seçim değiştikçe ListView içindeki verilerin de değişmesi gerek. Bunun için combobox'ın SelectedIndexChanged olayına yine Listele() yazarak listedeki verilerimizi yenilemiş olacağız.
Kodlarınızı incelemedim yanlış veya doğru varmı diye. Ayrıca kendi yazdığım Sql cümlesinde < ve >= vb. işaretleri kontrol etmeden ekledim. Siz gerekli kontrolleri yaparsınız.
Bu arada veritabanı olarak Access kullanmamanızı tavsiye ederim. En kötü ihtimalle SqlCompact kullanın.
AccessTr.Net teknik konular içeren bir sitedir. Bu tip sitelerde en iyi şekilde yardım alabilmeniz için Site Kurallarını mutlaka okumanız ve buna göre hareket etmeniz lazım.
Allah razı olsun,uzun süredir uğraşıyordum.Tavsiyelerinize uyacağım.
Konuyu Okuyanlar: 1 Ziyaretçi