Merhaba,
Elimde bir liste var. Ve bu listenin içerisinde değişken türde kayıtlar var. Listede bazı kolonlardaki veriler aynı. Bu kolonları tespit edip karşısına sayılarını yazdırmak istiyorum. Yani SQL deki group by gibi. Bunu ListView'de nasıl yapabilirim? bu veri SQL'den gelmediği için doğal olarak sorgu çalıştıramam. Bu veri bir dosyadan yükleniyor.
Kolonlar
Id
Kullanıcı Adı
Ülke
İşletim Sistemi
IP Adres
Bu kolonlara göre LV de grouplama yapıp count almam gerekli. Fikri olanlardan Allah razı olsun.
Hayırlı Günler.
Bir listedeki aynı satırların sayısını gruplama?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: Bir listedeki aynı satırların sayısını gruplama?
Merhaba,
Verileri TClientDataSet içine yükleyerek filter özelliğini kullanmanız ve yanlara toplam miktarları yazmanız mümkün diye düşünüyorum. Hatta iki tane tablo oluşturup birini inceleme, diğerini eş olmayan (UNIQUE) değerler için kullanabilirsiniz.
TClientDataSet memory table olarak kullanabileceğiniz bir nesnedir. Ayrıca bu konuda ün yapmış kbmMemTable componentını da kullanmanız mümkün olabilir. Bu da yine ücretsiz versiyonu oldukça yeterli bir memory table componentıdır.
http://news.components4developers.com/p ... Table.html
Verileri TClientDataSet içine yükleyerek filter özelliğini kullanmanız ve yanlara toplam miktarları yazmanız mümkün diye düşünüyorum. Hatta iki tane tablo oluşturup birini inceleme, diğerini eş olmayan (UNIQUE) değerler için kullanabilirsiniz.
TClientDataSet memory table olarak kullanabileceğiniz bir nesnedir. Ayrıca bu konuda ün yapmış kbmMemTable componentını da kullanmanız mümkün olabilir. Bu da yine ücretsiz versiyonu oldukça yeterli bir memory table componentıdır.
http://news.components4developers.com/p ... Table.html
Re: Bir listedeki aynı satırların sayısını gruplama?
Listview daki kayıt sayısı kadar for döngüsü oluştur. Bu döngünün içerisinde AnsiCompareText(Aranacak_Metin,İçinde_Aranacak) fonksiyonunu kullanarak karşılaştır eğer dönen değer 0 ise iki metin de aynıdır. Sayaç adında bir değişken oluştur. Eğer karşılaştırdığın iki değer aynı ise sayacı bir arttırarak kaç adet benzer kayıt olduğunu bulmuş olursun. istersen listview da benzer kayıtlar ve sayısı adında iki alan oluşturup buralara hangi kelime kaç defa var diye yazdırabilirsin.
Re: Bir listedeki aynı satırların sayısını gruplama?
Ek olarak 1 listbox ile bu işi çözebilirsin. O kadar döngüye gerek yok, uygulama içerisinde fazla döngü performans kaybı sebebidir. bir listbox a al verileri. Sonra listbox'un sort özelliğini aktif hale getir. (Listbox1.Sorted:= True; gibi bişeydi herhalde) sonra bir döngü kur ve her satırı kendinden bir önceki ile karşılaştır. bir tane de Count adında bir değişken tanımla (Integer) eğer değer aynı ise count + 1 yap ve aynı satırın textini al. bu şekilde hızlıca sonuca gidersin.