Select2G Fonksiyonu

Tanım


Herhangi bir uygulamada bellekte olan rowsetlerden, istenilen kriterlere uygun kayıtları sorgulamak ve gruplamak için kullanılan bir fonksiyondur. O an bellekte olmayan bir rowset sorgulanamaz. Eğer sorgulanan rowset, uygulama tarafından dinamik olarak yaratılan rowset ise, öncelikle rowsetin satıra ait olan alt rowseti okunur. Eğer sorgulanan rowset,  alt rowset değilse belgeye ait olan rowset okunur. Sorgulama sonucunda elde edilen bilgiler, adı verilen bir rowset nesnesine gruplanarak kopyalanır.  


Gruplama sırasında nümerik alanlar toplanır. Diğer tipteki tüm alanlar, eğer sorgu sonucu aynı değeri içeriyorsa, bu alan için gruplama satırına ilgili değer getirilir. Eğer sorgu sonucu ilgili alanda farklı değerler var ise gruplama satırına bu alan için boş bilgi getirilir.


Fonksiyonun işlevi sadece bu RowSeti oluşturmakdır. Bu bilgileri kullanmak için başka fonksiyonlar mevcuttur. RowSet belirli sayıda kayıt içinde oluşturulabilir.  Örneğin kriterlere uyan, ilk kaydı getir denilebilir.

Kullanım Şekli


Set RowSetNesnesi = Document.Select2G(SonuçRowSetAdı, SorgulananRowSetAdı, KriterCümlesi, SıralamaCümlesi, GruplamaCü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.

SorgulananRowSetAdı

Sorgulanmak istenen ve uygulamda o an bellekte olan rowsetin adı. Veritabanındaki tablolar, 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.

GruplamaCümlesi

Sorgulama sonucu elde edilen verilerin; tablodaki hangi alan veya alanlara göre gruplanacağının belirtildiği cümledir. Tablodaki alan adları girilmelidir. Sayısal alanlar, gruplama alanı olarak kullanılmazlar. Birden fazla gruplama alanı kullanılabilir. Bu durumda gruplama alanlarıı arasında “+” işareti kullanılmalıdır. Eğer herhangi bir gruplama yapılmak istenmiyorsa parametre “” 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, Sonuç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, sorgulama anından bellekte var olan tablolar sorgulanabilir.

Uygulama tarafından yaratılan rowsetlerden, öncelikle satıra ait alt rowsetler okunur. Yoksa normal rowseti okur.

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 fonksiyonundan tek farkı, ek olarak gruplama yapabilmesidir.

Örnek

Örnek İçin kullanılacak veri seti; ekran görüntüleri yardımı ile  aşağıda verilmiştir. Ekran görüntüsü 1’ deki cari hesabın sistemde 3 faturası bulunmaktadır. Bu üç faturanın iki tanesi aynı cari hesap fişinde işlenmiştir. Bu fişlerdeki faturaların (satırların) muhasebe hesap dağılımları ise şu şekildedir.


“39006446” numaralı fişin birinci satırında aşağıdaki muhasebe hesap dağılımı bilgisi vardır.

Hesap No

Hesap Adı

Masraf Merkezi

Masraf Merkezi Adı

Tutar

770 2002 30 20 11      

SEYAHAT GİDERLERİ                                

AI 02 008 0000          

MALİ İŞLER GENEL                                  

          2.485,00  

760 2002 30 20 11      

TANITIM SEYAHAT GİDERLERİ                        

AI 02 102 0000          

PAZARLAMA BİRİMİ GENEL                            

          2.450,12  

740 2002 30 21 21      

AKADEMİK SEYAHAT GİDERİ (DİĞER)                  

AK 02 000 0000          

FEN EDEBİYAT FAKÜLTESİ GENEL                      

          5.478,34  

740 2002 30 21 21      

AKADEMİK SEYAHAT GİDERİ (DİĞER)                  

AK 04 041 0000          

MESLEK YÜKSEK OKULU GENEL                        

          2.560,00  

740 2002 30 21 21      

AKADEMİK SEYAHAT GİDERİ (DİĞER)                  

AK 05 000 0000          

HUKUK FAKÜLTESİ GENEL                            

          7.863,83  

191 100 001            

İNDİRİLEBİLİR KDV %18                            

                       

                                                 

          3.750,71  









Toplam

       24.588,00  



“39006446” numaralı fişin ikinci satırında aşağıdaki muhasebe hesap dağılımı bilgisi vardır.


Hesap No

Hesap Adı

Masraf Merkezi

Masraf Merkezi Adı

Tutar

770 2002 30 20 11      

SEYAHAT GİDERLERİ                                

AI 02 008 0000          

MALİ İŞLER GENEL                                  

             913,56  

191 100 001            

İNDİRİLEBİLİR KDV %18                            

                       

                                                 

             164,44  









Toplam

          1.078,00  


Son olarak “39006447” numaralı fişin tek satırında aşağıdaki muhasebe hesap dağılımı bilgisi vardır.


Hesap No

Hesap Adı

Masraf Merkezi

Masraf Merkezi Adı

Tutar

770 2002 30 20 11      

SEYAHAT GİDERLERİ                                

AI 02 005 0000          

İDARİ İŞLER GENEL                                

          1.204,50  









Toplam

          1.204,50  


Ekran görüntüsü 1


Yukardaki verilere dayanarak, aşağıdaki örnek verilmiştir. Örnek, CARI20 (Cari Hesap Fişi) uygulamasında çalışmak üzere tasarlanmıştır.





Sub Makro1()

       Set TempMuhdst = Doc.Select2G("ABC001","MUHDST","","","MUHASEBECODE+MUHASEBECODE2",-1)

       Mesaj ="Cari Hesap Fiş No : " & CARI20E.EVRAKNO

       Mesaj =Mesaj & Chr(13) & "Muhasebe Kodu" & Chr(9) & "Masraf Merkezi" & Chr(9) & Doc.RightJustify("Tutar",15)

       for i = 1 to TempMuhdst.GetRowCount()

               HesapKodu = TempMuhdst.MUHASEBECODE(i)

               MasrafMerkezi = TempMuhdst.MUHASEBECODE2(i)

               Tutar = Doc.RightJustify(Doc.NumFormat(TempMuhdst.MUHASEBEFIYAT(i),12,2),15)

               Mesaj = Mesaj & Chr(13) & HesapKodu & Chr(9) & MasrafMerkezi & Chr(9) &Tutar

       next

       Doc.MsgBox Mesaj

End Sub



Yukarıdaki örnekte, cari hesap fişi uygulamasında iken uygulama tarafından bellekte dinamik olarak yaratılan MUHDST rowsetindeki verilerin, muhasebe hesap koduna ve masraf merkezine göre gruplanması istenmiştir. Herhangi bir kriter verilmemesine rağmen fonksiyon sadece, ilgili cari hesap fişindeki aktif satırın MUHDST alt rowsetindeki verileri işleme tabi tutmuştur. Örneğimizin sonucu oluşan birinci mesaj kutusunda da görüldüğü gibi, sadece birinci satırdaki işlemlerin muhasebe hesap kodu ve masraf merkezi bazında gruplanması sonucu yeni oluşan verimiz, altı (6) satırdır. İkinci mesaj kutusunda ise, ikinci satırın MUHDST verilerinin gruplanmış hali gösterilmiştir.


               


Paylaşım Makrosu