Sorgu mu ? kullanmıyorum !

1 2 3
14/02/2011, 17:09

okileturc

Kayıtlı sorgu yığınından veya kod sayfalarına yazdığınız uzun
SQL cümlelerinden kurtulmak ister misiniz ?
Ayni rapor veya form tasarımına 1’den fazla sorgu çağırmak gerektiğinde
“RecordSource” ile oynamıyor musunuz ?

O halde “SQL arşivinizi oluşturun” !

Bu konuda geçen sene bir üyemizin sorusuna cevaben küçük
bir çalışma yapmıştık. Ancak bunu bir metod olarak kullanmanın da
enteresan bir çözüm olduğunu düşünüyorum ( ben kullanıyorum )

Uygulamalarıma ilave bir tablo ekliyorum “tbl_sql – Sql cümleleri”
tablosu. SQLC_id, SQLC_keyword, ve SQLC alanlarından oluşuyor.
(bkz. ekteki mdb örneği )

En karmaşık sorgularınızı oluşturduktan sonra, Sql görünümüne
geçerek oluşturulan kodu kopyala/ yapıştır ile tabloma kayıt ediyorum,
ve bir anahtar kelime ekliyorum ( SQLC_keyword )





Daha sonra gerektiğinde “anahtar kelime “ ile çağırıyorum

Örnek 1 ( Form üzerindeki yeni kart ekleme butonu için )

Dim StrSQL As String
StrSQL = Dlookup ("[SQLC]", "tbl_sql", "[SQLC_keyword]='kartekle'")
DoCmd.RunSQL StrSQL
Örnek 2 ( Raporun açılışına )

Private Sub Report_Open(Cancel As Integer)
Me.RecordSource = Dlookup ("[SQLC]", "tbl_sql", "[SQLC_keyword]='hareketgorenler'")
End Sub

Burada önemli olan bir başka konu gerçekten sorguya ihtiyaç
duyulduğunda ne yapılabileceğidir

İstediğimiz Sql cümlesinden yeni bir sorgu yaratabilriz :
Bu sorguya “maymuncuk” adı verelim, gerektiğinde kullanalım


Dim db As DAO.Database
Dim MyQry As DAO.QueryDef
Set db = CurrentDb
On Error Resume Next
' maymuncuk sorgusu her yeni işlemde önce silinecektir
db.QueryDefs.Delete "maymuncuk"
'sorguya Sql cümlemizi atıyoruz
Set MyQry = db.CreateQueryDef("maymuncuk", Dlookup ("[SQLC]", "tbl_sql", "[SQLC_keyword]= 'hareketgorenler'"))
db.Close

Artık bu somut sorgu üzerinden kayıt tarama işlemleri yapabilir
RecordSet olarak kullanabilriz.

Örnek ( maymuncuk sorgusundan kayıt sayısı alalım )

Me.ALANADI = DCount (“[kart_ID]”, “maymuncuk”)


Kolay gelsin



















14/02/2011, 17:30

ozanakkaya

Teşekkürler Oktay hocam, çok akıllıca.
14/02/2011, 17:49

benremix

(14/02/2011, 17:30)sledgeab yazdı: Teşekkürler Oktay hocam, çok akıllıca.

Saygılar...
14/02/2011, 19:25

Yandemir

güzel çalışma teşekkürler. keşke örnekte linked table kullanmasaydın.
14/02/2011, 19:28

okileturc

Hocam, atlamışım ektedir, 1. mesaj da güncellenmiştir
14/02/2011, 19:51

Puletin

Paylaşım ve fikir için teşkürler
1 2 3