01/12/2016, 21:59
01/12/2016, 22:57
Ö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.
01/12/2016, 23:08
Allah razı olsun,uzun süredir uğraşıyordum.Tavsiyelerinize uyacağım.