• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Çözüldü Koşula uymayan verilerin Listview1'e eklenmesini engelleme?

  • Konbuyu başlatan Konbuyu başlatan s.savas
  • Başlangıç tarihi Başlangıç tarihi
Katılım
12 Ocak 2009
Mesajlar
838
Excel Vers. ve Dili
2003
Merhaba arkadaşlar.
Listview1 de toplantıda görüşülecek konular listeleniyor. Görüşülen konu onaylanırsa listeden eksilmesi,gösterilmemesi gerekiyor.
Talebe ilişkin kodlamada yardımlarınıza ihtiyacım var.


Ekran Alıntısı.PNG

Kod:
Private Sub listeye_al()

 With Me.ListView1
  .Gridlines = True
  .FullRowSelect = True
  .View = lvwReport
  .ListItems.Clear
  .ColumnHeaders.Clear

End With
With ListView1
.View = lvwReport
.ColumnHeaders.Add , , "KIMLIK", 0, lvwColumnLeft
.ColumnHeaders.Add , , "Talep İçeriği", 70, lvwColumnLeft
.ColumnHeaders.Add , , "Miktar", 50, lvwColumnCenter
.ColumnHeaders.Add , , "Ölçü/Birim", 70, lvwColumnCenter
.ColumnHeaders.Add , , "Talep Yapan Birim", 100, lvwColumnLeft
.ColumnHeaders.Add , , "Taleple İlgili Depo", 100, lvwColumnLeft
.ColumnHeaders.Add , , "TKY Adı Soyadı", 100, lvwColumnLeft
.ColumnHeaders.Add , , "A. Ortala Tüketim", 100, lvwColumnLeft
.ColumnHeaders.Add , , "Mevcut Stok Durumu", 100, lvwColumnCenter
.ColumnHeaders.Add , , "Gerekçe", 100, lvwColumnLeft
.ColumnHeaders.Add , , "Onay", 50, lvwColumnCenter
.ColumnHeaders.Add , , "Red", 60, lvwColumnCenter
.ColumnHeaders.Add , , "Açıklama", 100, lvwColumnLeft
.FullRowSelect = True
.Gridlines = True
End With

    
On Error Resume Next
Set baglan = CreateObject("adodb.connection")
Set rs = CreateObject("adodb.recordset")

Call BAGLANTI

   rs.Open "select KIMLIK,talep_içerigi,miktarı,ölçü_birimi,talep_yapan_birim,taleple_ilgili_depo,tky_adısoyadı,aylık_ortala_tüketim,mevcut_stok_durumu,gerekçe,onay,red,açıklama from [itk_talep]", baglan, 1, 1
 
    ListView1.ListItems.Clear
Dim satir As Integer
    On Error Resume Next
    If Not rs.EOF Then
        Do While Not rs.EOF
 Set evn = ListView1.ListItems.Add(, , rs.fields("KIMLIK"))
 evn.SubItems(1) = rs.fields("talep_içerigi")
 evn.SubItems(2) = rs.fields("miktarı")
 evn.SubItems(3) = rs.fields("ölçü_birimi")
 evn.SubItems(4) = rs.fields("talep_yapan_birim")
 evn.SubItems(5) = rs.fields("taleple_ilgili_depo")
 evn.SubItems(6) = rs.fields("tky_adısoyadı")
 evn.SubItems(7) = rs.fields("aylık_ortala_tüketim")
 evn.SubItems(8) = rs.fields("mevcut_stok_durumu")
 evn.SubItems(9) = rs.fields("gerekçe")
 evn.SubItems(10) = rs.fields("Onay")
 evn.SubItems(11) = rs.fields("red")
 evn.SubItems(12) = rs.fields("açıklama")
  rs.MoveNext
      
 
       Loop
    End If
    rs.Close: con.Close
    Set rs = Nothing

End Sub
 
Merhaba.
ADO bağlantı ile veri tabanından veri çekme konusuyla daha evvel hiç ilgilenmedimve bu konuda bilgim de yok malesef.

Forumda arama yaptığımda gördüğüm şey; rs.Open..... satırında from... WHERE komutuyla koşullu veri alınıyor gibi geldi bana.
Aşağıdaki konu sayfasında Sayın GİZLEN'in cevabına bir göz atın isterseniz, faydası olacağını düşünüyorum.
Bence deneme yanılma ile sonuca ulaşabilirsiniz.

Farklı bir dosyadan koşullu veri almak

Sanırım aşağıdaki birinci satırda yer alan mevcut kod satırında değişiklik yaparak, ikinci satırdakine benzer bir komut satırı oluşturacaksınız.
Konu hakkında bilgisi olan başka bir üye daha doğru cevap verecektir elbette, benimkisi sadece bir fikir.
CSS:
rs.Open "select KIMLIK,talep_içerigi,miktarı,ölçü_birimi,talep_yapan_birim,taleple_ilgili_depo,tky_adısoyadı,aylık_ortala_tüketim,mevcut_stok_durumu,gerekçe,onay,red,açıklama from [itk_talep]", baglan, 1, 1

rs.Open "select * from [fatura] WHERE fttarih='" & txttarih.text  & "' and [fatura].firma LIKE '%" & txtfirma.Text & "%' order by fttarih DESC", baglan, 1, 1
 
sn feraz tarafından çözülmüştür.
Kod:
Dim iii As Integer
With Me.ListView1
    For iii = .ListItems.Count To 1 Step -1
        If LCase(.ListItems(iii).SubItems(11)) = "x" Or LCase(.ListItems(iii).SubItems(12)) = "x" Then
            .ListItems.Remove (iii)
        End If
    Next iii
End With
 
sn feraz tarafından çözülmüştür.
Kod:
Dim iii As Integer
With Me.ListView1
    For iii = .ListItems.Count To 1 Step -1
        If LCase(.ListItems(iii).SubItems(11)) = "x" Or LCase(.ListItems(iii).SubItems(12)) = "x" Then
            .ListItems.Remove (iii)
        End If
    Next iii
End With

Merhaba.
Eğer veri 32 binden fazla ise integer yerine Long yazmalısınız.İnteger alışkanlık olduğu için yazmıştım aklınızda bulunsun.
 
Geri
Üst