Bildiğiniz gibi gruplandırma denilince akla ilk sql sentaksındaki “group by” deyimi gelir. (malum bisküvinin reklamı gibi oldu:)) Bu deyim ile örneğin iki defa “adana” terimine rastlansa bile sadece 1 defa “adana” terimi bize sunuluyor. Ama veriler her zaman veritabanında olmayabiliyor. İşte o zaman sql haricinde bize bir çeşit gruplandırma fonksiyonu lazım olacaktır. Şimdi basit bir veri kümesi sunup üzerinde konuşalım.*ankaraadanasiirtkastamonu**ordusivas**ordumuğla**ordu*ankara
Gördüğünüz gibi “ankara” ve “ordu” verileri tekrar edenlerden. Bunu sıralayıp bir düzene koyacak kodumuzu yazalım şimdi!.. Bu arada veritabanımızdan bir tabloya bağlanmış olalım ve bu alandaki veriyi rs(“iller”) değişkeninden okuyor olalım. Ama veritabanı olmasına takılmayın. Tabiiki de hazır veritabanına bağlanmışken sql deyimleriyle işi halledebiliriz ama bizim amacımız bunu kendi kodumuza yaptırmak…dim iller(0),frekans(0)for e=1 to 10il = rs(“iller”)Flag=falsefor i=0 to Ubound(iller)if iller(i) = il then Flag=true : exit fornextif Flag=true thenfrekans(i)=frekans(i)+1elseRedim Preserve iller(e)Redim Preserve frekans(e)iller(e) = ilfrekans(e) = 1end ifrs.movenextnext
Sonuç olarak iller dizi değişkeninde “ankara” ve “ordu” verisi bir kez tekrarlanıyor olacak. Yani tekrarlı hali 10 olan grubumuz bu işlemden sonra 7’ye inmiş olacaktır. Bu arada ufak bir inceliğe daha giriştik. frekans isimli dizi değişkenimiz gözünüze çarpmış olmalı! Örneğin iller(0) yazdığımızda “ankara”ya ulaşabiliyorken frekans(0) yazdığımızda ise “ankara” teriminin kaç defa tekrar ettiği bilgisine erişebiliriz.Bu arada Redim Preserve komutunu açıklayalım. ASP dizi değişken (array) oluştururken kaç elemanlı olacağını da sorar bize (gerçi sadece parantez yazmak da yetiyor aslında) ama her zaman bize kaç elemanlı bir değişkenin lazım olacağını bilemeyiz. Öyle bir durum olur ki beklenmedik şekilde daha fazla elemanı olan bir değişkene ihtiyacımız oluşuverir. İşte bu durumda Redim komutuna deriz ki; bu diziyi yık öldür mahfet içindeki tüm veriyi de sil yeniden oluşturabileceğim elemanlar ekleyebileceğim bir hale getir gerisini bana bırak… Ee ama bu işimize gelmez değil mi? Çünkü bize sadece yeni bir eleman daha lazım, eski verilerimiz de olduğu gibi yerinde durmalı!.. İşte bunu istediğimiz durumlarda da Redim sözcüğünden sonra Preserve komutunu ekliyoruz. İngilizce olan bu kelimeyi “Koru” olarak dilimize çevirmek mümkün. Malum programımızın görevi, yerleri önceden kestirilemeyen “tekrarlı veri” kümelerini bulup bunları temizlemek. İşte bunu yaparken de program yapısal şeklini bir taraftan koruyup bir taraftan değiştirmek durumunda kalıyor. Bu bir çeşit array editleme işlemi olarak da düşünülebilir..