Bir kayıt grubunu işaretlemek

1 2 3 4 5
26/03/2009, 11:00

Seruz

ListView; güzel bir görünüşe, bir çok işleve ve özelliğe sahip.
ListBox'a göre tek kötü tarafı çok kod yazmak gerekmesi.

Bugün fırsat bulduğumda şu olaya bakacağım.
26/03/2009, 11:39

okileturc

ok sizden de cevap bekleyeceğim
26/03/2009, 17:59

Seruz

Ancak fırsat bulup bakabildim ve tüm mesajları baştan tekrar okudum.

Alıntı:Arkadaşlar bir sürekli form üzerine çağırdığım kayıtların "bazılarını" checkbox ile işaretlemek ve bu bloğa bir eylem yapmak istiyorum. (Güncellemek, silmek, vb ) Bunu sorgu filtreleri ile yapmak elbette mümkün ama benim istediğim "tek tek seçim".
Buraya kadar tamam. Kayıtların bir listesini görüp onların arasından bazılarını seçmek ve bu seçilen kayıtlar üzerinden işlem yapmak istiyorsunuz.

Alıntı:Bu checkbox u tabloda bir alan olarak tutarsam çok kullanıcı ortamda ayni anda ayni işi yapan kişi diğer kullanıcının işaretlediği kayıtları da işaretlenmiş olarak görüyor.
Bu da tamam, tabloda işaretlerseniz, tüm kullanıcılar görür.

Bu nedenle, ListBox'ta çoklu seçim ile veya ListView'da CheckBox kullanarak yapılabilir. Böylece kullanıcılar birbirlerinin seçimlerini görmezler.

---
ListBox'ta toplu seçim yapmak ve seçilenlerin üzerinde işlem yapmak için, Sn. CELOYCE'nin gönderdiği (benim daha önce yapmış olduğum bir örnek) dosya işinizi görür. (Ayrıca bende ekledim son halini)

Bu işlem için asıl gerekli kodlar şu şekilde:
Kod:
For Each PID In Me.Parca_Listesi.ItemsSelected
        SQL = "UPDATE ANAPARCA SET SECILI = -1 WHERE ANAPARCA_ID = " & Me.Parca_Listesi.ItemData(PID)
        DoCmd.RunSQL SQL
        Me.Parca_Listesi.Selected(PID) = False
    Next PID
ListBox'ın .ItemsSelected özelliği kullanılıyor

---
ListView'de checkbox ile seçim yapmak ve seçilenlerin üzerinde işlem yapmak için, Sn. Krizantem'in gönderdiği sn. Bilgisayarcı'ya ait örnek dosya işinizi görür. Kodları bende inceledim şimdi. Animasyonlu olduğu için kodlar biraz karışık gibi görünüyor. Ancak sizin kullanmanız gereken, seçilen kayıtlarla ilgili işlem yapan kısım şu (ListedekileriAl Fonksiyonu):
Kod:
Private Sub ListedekileriAl()
Dim Item As ListItem
Dim i As Long
Dim mesaj As String
    For i = 1 To Me.ListView1.ListItems.Count
      Set Item = Me.ListView1.ListItems.Item(i)
      If Item.Checked Then
        If Len(mesaj) = 0 Then mesaj = Item.Tag Else mesaj = mesaj & ";" & Item.Tag
      End If
    Next
  If Len(mesaj) > 0 Then MsgBox mesaj
End Sub
ListView'ın Checked özelliği kontrol ediliyor.
--
Birde sonradan şunu yazmışsınız:
Alıntı:hocam liste kutusundan çoklu seçim ile tabloya aktarmak için ardımcı olursanız elbette olur, benim derdim kayıtları tek tek listeden seçip yeni tablo yaratmak.

Kayıtları seçip bir tablo yaratırsanız, çok kullanıcılı ortamda diğer kullanıcılar da seçilenleri görecektir. Bunun için kullanıcı kodlarını da tabloya yazıp, kullanıcı bazında filtre yapmanız lazım, onu hatırlatayım.
--

ListView veya ListBox'tan istediğinizi kullanabilirsiniz.
Örnek dosyanız olmadığı için kodları kendinize sizin uyarlamanız gerekecek.
Takıldığınız yerde tekrar yardımcı olurum.

Saygılarımla,
26/03/2009, 18:11

okileturc

Hocam çabanız çok değerli,
Sonuç olarak sadece checkbox un görselliğinden
vaz geçtim ve Listbox a karar verdim. Benim arzu
ettiğim sonucu SelectedItems özelliği çok güzel veriyor
Uyguladım, sonuç mükemmel
Çok teşekkür ederim
26/03/2009, 18:27

Seruz

Rica ederim, sn. okileturc.

Bende görsellik ve bir çok özelliği açısından ListView'i beğeniyorum ancak şu çok kod yazma derdi yüzünden henüz hiç bir uygulamam da kullanmadım.

ListBox bana çok daha basit geliyor ve onu tercih ediyorum.
ListBox'taki tek sorunum, Sayıları sola dayaması ve format verilememesi idi,
bu sorunumu da geçenlerde foruma yazmıştım ve Lebans'ın yaptığı bir çalışmayla çözdük.

Bence de ListBox.
Ne kadar basit, o kadar iyi.
26/03/2009, 18:32

okileturc

Listbox Format la ilgili link i bir kez daha yazarmısınız, ben de bakayım
1 2 3 4 5