Tanım
Fiziken var olan ve veritabanında saklanan bir tablodan, istenilen kriterlere uygun kayıtları sorgulamak ve gruplamak için kullanılan bir fonksiyondur. Sorgulama sonucunda elde edilen bilgiler, adı verilen ve bellekte geçici olarak yaratılan bir tabloya gruplanarak kopyalanır. Bu tabloyu da, bir RowSet nesnesi (sadece bellekte oluşturulan tablo) oluşturup içine kopyalar.
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.Select1G(SonuçRowSetAdı, TabloAdı, 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. |
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. |
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, 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.
•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.
•Select1 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.
Yukarıdaki örnekte, veritabanında kayıtlı olan MUHDST tablosunda yer alan örnek veri setindeki verilerin, muhasebe hesap koduna göre gruplanması istenmiştir. Veritabanınıda kayıtlı olan örnek veri, en detayda dokuz (9) satırdan oluşmaktadır. Örneğimizin sonucu oluşan mesaj kutusunda da görüldüğü gibi, tüm işlemlerin muhasebe hesap kodu bazında gruplanması sonucu yeni oluşan verimiz dört (4) satırdır.
Sub Makro1() Kriter = "EVRAKNO>='39006446'&EVRAKNO<='39006447'" Set TempMuhdst = Doc.Select1G("ABC001","MUHDST",Kriter,"","MUHASEBECODE+MUHASEBECODE2”,-1) Mesaj ="Muhasebe Kodu" & Chr(9) & "Tutar" for i = 1 to TempMuhdst.GetRowCount() HesapKodu = TempMuhdst.MUHASEBECODE(i) Tutar = Doc.RightJustify(Doc.NumFormat(TempMuhdst.MUHASEBEFIYAT(i),12,2),15) Mesaj = Mesaj & Chr(13) & HesapKodu & Chr(9) & Tutar next Doc.MsgBox Mesaj End Sub |
Yukardaki örnekte de, hem muhasebe kodu, hem de masraf merkezi bazında gruplama yapılmıştır. Her iki gruplama alanı arasında “+” işareti kullanılmıştır. Aşağıdaki mesaj kutusunda örnek sonucu görülmektedir. Satır sayısı yediye (7) yükselmiştir.
Paylaşım Makrosu
Copyright © <2017> by <Birleşik Yazılım>. All Rights Reserved.