Tanım
Veritabanında saklanan bir tablolardan, SQL SELECT deyimi ile kayıtları sorgulamak için kullanılan bir fonksiyondur. Sorgulama sonucunda elde edilen bilgiler, adı verilen ve bellekte geçici olarak yaratılan bir tabloya, alan adları SQL cümlesinde belirtilecek şekilde kopyalanır. Fonksiyon, SQL Select deyimini çalıştırır. SQL cümlesini yazmak tamamen apayrı bir konudur ve kullanıcını becerisine bağlıdır. Eğer SQL cümlesi hatalı ise, yazılım bir hata mesajı ile kullanıcıyı uyaracaktır.
Sistemin sahip olduğu diğer veritabanı fonksiyonlarından temel farkları; birden fazla tabloyu aynı anda okuması ve ve SQL cümlesinin ne kadar yetenekli yazıldığına bağlı olmasıdır. Yine diğer fonksiyonlara göre daha da hızlı çalışmaktadır.
Kullanım Şekli
Set RowSetNesnesi = Document.RunSQLQuery(SonuçRowSetAdı, SQLCümlesi)
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. |
SQLCümlesi |
SQL Select cümlesinin kendisidir. Verilerın okunacağı tablo adları, okuma anında uygulanacak kriterler, hangi alanların veri olarak geri döneceği, ne kadar veri dönüleceği vs. tüm bu detaylar bu cümle içinde söylenir. |
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 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.
•Sistemin sahip olduğu diğer fonksiyonlardan farkı, SQL Select deyiminin yeteneklerine bağlı olmasıdır.
Örnek
Daha önce SelectX sistem fonksiyonlarını anlatırken verilere dayanarak, aşağıdaki örnekler verilmiştir.
Yukarıdaki örnekte, veritabanında kayıtlı olan MUHDST tablosunda yer alan örnek veri setindeki verilerin, kayıt sırasına göre gösterimi aşağıdaki mesaj kutusunda gösterilmiştir. SelectX fonksiyonlarında elde edilen veriler sadece tabloda yer alan verilerle sınırlıdır. Yani tabloda yer almayan, fakat ilişkili tablolarda yer alan verilere ulaşmak için ilave işlemlere veya fonksiyonlara ihtiyaç vardır. RunSQLQuery fonksiyonu kullanıcı tanımına göre bu sorunuda çözmektedir.
Sub Makro1() Dim SQLCumlesi SQLCumlesi = "Select T1.MUHASEBECODE as HESAPKODU, T2.AD as HESAPADI, SUM(T1.MUHASEBEFIYAT) as TUTAR from MUHDST T1 " SQLCumlesi = SQLCumlesi & "inner join MUHA00 T2 on T1.MUHASEBECODE = T2.KOD " SQLCumlesi = SQLCumlesi & "where T1.EVRAKNO>=' 39006446' and T1.EVRAKNO<=' 39006447' " SQLCumlesi = SQLCumlesi & "Group By T1.MUHASEBECODE, T2.AD " SQLCumlesi = SQLCumlesi & "Order By T1.MUHASEBECODE" Set TempMuhdst = Doc.RunSQLQuery("ABC001",SQLCumlesi) Mesaj ="Muhasebe Kodu" & Chr(9) & "Hesap Adı" & Chr(9) & Chr(9) & Chr(9) & "Tutar" for i = 1 to TempMuhdst.GetRowCount() HesapKodu = TempMuhdst.HESAPKODU(i) Tutar = Doc.RightJustify(Doc.NumFormat(TempMuhdst.TUTAR(i),12,2),15) Mesaj = Mesaj & Chr(13) & HesapKodu & Chr(9) & mid(TempMuhdst.HesapAdi(i),1,20) & Chr(9) & Tutar next Doc.MsgBox Mesaj
End Sub |
Yukarıda verilen örnek ile ilk örnek arasındaki temel fark SQL cümlesinin yapısından kaynalanmaktadır. Bir önceki cümleye göre daha karmaşık bir hal almıştır. Yeni cümleye, sıralama, gruplama ve başka bir tabloya erişip veri okuma özellikleri eklenmiştir. Ana tablodaki (MUHDST) muhasebe kodlarına göre sıralama ve gruplama yapılmıştır. Ayrıca muhasebe hesap planı tablosuna (MUHA00) erişip hesapların adı elde edilmiştir. Ayrıca elde edilen alanlar yeniden isimlendirilmiştir. Bu durumda örneğimizin sonucu aşağıdaki mesaj kutusunda gösterilmiştir
Paylaşım Makrosu
Copyright © <2017> by <Birleşik Yazılım>. All Rights Reserved.