Select1 Fonksiyonu

Tanım


Fiziken var olan ve veritabanında saklanan bir tablodan, istenilen kriterlere uygun kayıtları sorgulamak için kullanılan bir fonksiyondur. Sorgulama sonucunda elde edilen bilgiler, adı kullanıcı tarafından verilen ve bellekte geçici olarak yaratılan bir tabloya kopyalanır.  Bu tabloyu da, bir RowSet nesnesi (sadece bellekte oluşturulan tablo) oluşturup içine kopyalar. Fonksiyonun işlevi sadece bu RowSeti oluşturmaktır. Rowset içindeki bilgileri kullanmak için başka fonksiyonlar mevcuttur. Bu fonksiyonlar RowSet nesnesi bölümünde anlatılmıştır. RowSet belirli sayıda kayıt içinde oluşturulabilir. Örneğin kriterlere uyan, ilk kaydı getir denilebilir. SQL deki Select ile benzer işleve sahiptir. Geri dönülen alanların seçilmesi gibi bazı işlevlere sahip değildir.

Kullanım Şekli


Set RowSetNesnesi = Document.Select1(SonuçRowSetAdı, TabloAdı, KriterCümlesi, SıralamaCümlesi, KayıtSayısı)

Ana Nesne


Document (Doc) nesnesinin elemanıdır. Bir doküman nesnesi ile kullanılmak zorundadır.

Parametreler


Parametre

Açıklama

SonuçRowSetAdı

Sorgulama sonucu elde edilen bilgilerin bellekte geçici tablo gibi saklandığı RowSetin adı. Aynı uygulama içinde, aynı ad bir kez kullanılır. Başka bir sorgulamada da kullanılırsa, önceki sorgulama sonucu oluşturlan rowset yokedilir.

TabloAdı

Veritabanında saklanan ve içindeki verilerin sorgulanacağı tablonun adı. Bellekte geçiçi olarak oluşturulan rowsetler bu fonksiyonda kullanılamaz.

KriterCümlesi

Veritabanında saklanan verilerden, hangilerinin okunucağının tespit edildiği kriterlerin yer aldığı cümle. Kriter olarak TabloAdı ile verilen tablodaki alan adları kullanılır. Sayısal alanlar kriter olarak kullanılamaz. Bir kriterde, kıyaslama için karşılaştırma işaretleri kullanılabilir. Bunlar:

“=” : Eşit,

“!=” veya “<>” : Eşit değil veya farklı,

“<” : Küçük

“<=” : Küçük eşit,

“>” : Büyük,

“>=” : Büyük eşit,

Birden fazla kriter kullanılmak istenirse; kriterler arasında “&” (and) işareti kullanılmalıdır.  

Bir alanın karşılaştırılacağı veri ise “’” (tek tırnak) işareti içinde girilmelidir. Aksi halde kriter işlevini görmez.

SıralamaCümlesi

Sorgulama sonucu elde edilen verilen tablodaki hangi alan veya alanlara göre sıralanacağının belirtildiği cümledir. Tablodaki alan adları girilmelidir. Varsayılan sıralama şekli küçükten büyüğedir. Eğer büyükten küçüğe sıralanmak isteniyorsa ilgili alanın başına “<” işareti konulmalıdır. Birden fazla sıralama alanı kullanılabilir. Bu durumda sıralama alanları arasında “+” işareti kullanılmalıdır. Eğer herhangi bir sıralama yapılmak istenmiyorsa kriter “” boş bırakılmalıdır.

KayıtSayısı

Sorgulama sonucu, elde edilen verilerden kaç kayıt sayısının geri dönüleceğinin söylendiği parametredir. Tam sayı değeri olarak girilmelidir. Kriterlere uyan tüm kayıtların geri dönülmesi isteniyorsa “-1“  değeri girilmelidir. 0 (sıfır) ve pozitif tamsayılarda istenilen kadar kayıt sayısı geri dönülür. Diğer tüm değerlerde fonksiyon hata verir.

Geri Dönen Değerler


Bellekte, RowSetAdı parametresinde verilen isimde bir geçici bir tablo geri dönülür. Bir rowset nesnesine atanarak (set edilerek) kullanılmalıdır.

Hatırlatmalar


Sadece veritabanında var olan tablolar sorgulanabilir.

Eğer veritabanındaki tablonun tüm kayıtlarının geri dönülmesi isteniyorsa KriterCümlesi boş olarak fonksiyona verilmelidir.

Sorgu sonucu oluşan rowsetler büyüklüğüne göre hafızada yer kaplar. Bellek tutarını aşan aşırı büyük sorgular, bellek bitene kadar çalışır, sonra da hata verirler.

Select2 ve Select3 fonksiyonlarından tek farkı sadece veritabanında tanımlı olan tabloları okumasıdır.

Rowsetler üzerinde işlem yapmak için, RowSet Fonksiyonları kısmına bakabilirsiniz.

Örnek


Sub Makro1()

       Kriter = "KOD>'SI'&KOD<'SZ'"

       Set C00 = Doc.Select1("ABC001","CARI00",Kriter,"",-1)

       ToplamSaticiSayisi = C00.GetRecCount()

       Kriter = "KOD>'SI'&KOD<'SZ'&AP10='1'"

       Set C00 = Doc.Select1("ABC001","CARI00",Kriter,"<KOD",-1)

       AktifSaticiSayisi = C00.GetRecCount()

       Mesaj = "Sistemdeki Aktif Satıcı sayısı / Toplam Satıcı sayısı bilgisi : "

       Mesaj = Mesaj & AktifSaticiSayisi & " / " & ToplamSaticiSayisi

       Mesaj = Mesaj & chr(13) & "İlk kayıttaki Satıcı Kodu : " & C00.KOD(1)        

       Doc.MsgBox Mesaj

End Sub




Yukarıdaki örnekte, cari hesap kartlarında kayıtlı olan satıcı kartı bilgileri sorgulanmıştır. Örnek sonucu, elde edilen kayıt sayıları aşağıdaki mesaj kutusunda gösterilmiştir. Örnek veritabanında, satıcı cari hesap kartlarının kodları “SI” ile başlayıp, “SY” ile bitmektedir.


Yukardaki ilk Select1 fonksiyonundan; veritabanında saklanan CARI00 (cari hesap kartları) tablosundaki, KOD alanının  “SI” kelimesinden büyük ve yine KOD alanının  “SZ” kelimesinden küçük olan tüm kayıtların bulunup, bellekte ABC001 geçici tablosuna doldurulması ve bu tablonun C00 adlı RowSet nesnesine atanması istenmiştir. Bu uzun cümledeki, “C00” rowset nesnesi adı, ve “ABC001” geçici tablo adları kullanıcı tarafından rastgele verilmektedir. Sıralama alanı parametresi ise, SıralamaCümlesi parametresine “” boş değer girilerek kullanılmamıştır. “-1“ KayıtSayısı parametre değeri ise kriter cümlesine uyan tüm kayıtların geri dönüleceğini göstermektedir.


İkinci Select1 fonksiyonundan ise birinci fonksiyona ek olarak; AP10 (aktif/pasif) alanının “1” (aktif) olan değerleri istenmiştir. Elde edilen değerler ise KOD alanına göre büyükten küçüğe sıralanmıştır. İkinci fonksiyonda aynı ABC001 geçici tablo adı  kullanıldığından, hafızadaki ilk tablo yok edilmiştir. Her iki fonksiyonun sonucu oluşan geçici tablolar aynı C00 RowSet nesnesine atanmıştır.


Ayrıca ikinci fonksiyonun sonucunda elde edilen Rowset nesnesinin ilk kayıdının KOD alanı (“KOD(1)” birinci kayıt anlamındadır.) ekranda gösterilmiştir. Sıralama büyükten küçüğe olduğundan en son aktif satıcı kodu geri dönülmüştür.



Paylaşım Makrosu