Vb.net günü geçmiş ve geçmemiş verileri listele

01/12/2016, 21:59

alican60

Formdaki combobox üzerinden vade tarihi geçmiş ve vade tarihi geçmemiş verileri listviewde nasıl listeleyebilirim.
01/12/2016, 22:57

alpeki99

Ö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.


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

alican60

Allah razı olsun,uzun süredir uğraşıyordum.Tavsiyelerinize uyacağım.