Yeni bir Paket Programlar dersi makalesi ile birlikteyiz.
Neredeyse tüm veri tabanlarında Sql deyimlerinin kullanıldığını görmekteyiz. Bu deyimler yardımı ile tablo içerisinde değişik kriterlere göre bilgileri alabilmekteyiz. Excel programı da veri tabanı olarak kullanılabilmektedir. O halde Sql deyimlerini de kullanabiliriz. Filtreleme ile yapılabilecek birçok işlemi hatta daha fazlasını bu deyimler yardımı ile yapabilirsiniz. Bu makalemizde Select deyimi ile ilgili uygulama geliştireceğiz. Makaleyi okumadan önce lütfen reklamlara tıklamayı unutmayınız.
İlk olarak Excel çalışma sayfasına uygulama için gerekli verileri ekliyoruz. Daha sonra bu verileri bir tablo altında topluyoruz.
Verilerimizin bulunduğu alanı seçtik ve tablomuzu oluşturduk. Alan seçerken kolon bazında yapılmış olması oluşabilecek yeni veri ekleme durumlarında daha fazla etkinlik sağlayacaktır.
Tablomuzu oluşturduk. İstediğimiz biçimlemeyi tasarım menüsünden yapabilirsiniz.
Geliştirici menüsünden birer adet CommandButton ve Textbox ekliyoruz.
Şimdi kod yazımı için VBA moduna geçelim. Bunun için Alt+F11 tuş takımını kullanabilirsiniz.
Gerekli referansları verebilmek için Araçlar>>Referanslar menüsüden ”Microsoft ActiveX Data Objects 2.8 Library” kutusunu işaretliyoruz.
Excel programına ait değişik versiyonlar mevcut olduğu için ConnectionString satırı değişiklik göstermektedir. Biz, Excel 2013 kullandığımız için Microsoft Access Database Engine 2013 Redistributable dosyasını indirdik ve bilgisayarımıza kurduk. Yukarıda verilen Referans ise, Excel 2003 (8.0) ve Excel 2007 (12.0) için geçerlidir. Excel 2010 (14.0) sürümü için, Microsoft Access Database Engine 2010 Redistributable dosyasını indirip, kurmalısınız. Buna göre, connectionstring satırları şöyle olacaktır.
strCon = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” & strFile & “;Extended Properties=”"Excel 8.0;HDR=Yes;IMEX=1″”;”
strCon = “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=” & strFile & “;Extended Properties=”"Excel 14.0;HDR=Yes;IMEX=1″”;” şeklinde değiştirmelidir.
Aşağıda ki metodu kodlarımıza ekliyoruz. Bu metod yardımıyla sayfamızdaki tabloları liste haline dönüştürmüş olduk.
Sub SqlSorgusu()
Const Basla = "Sql"
Dim x, WSh, i&
With ThisWorkbook
For Each WSh In .Worksheets
i = i + 1
For Each x In WSh.ListObjects
.Names.Add Basla & i & x.Name, x.Range, True
Next
Next
End With
End Sub
Peki SQL sorgusunu yaparken hangi tablo ismini kullanacağız? Metodumuzu Button kontrolümüze “Call SqlSorgusu” şeklinde ekliyoruz ve çalıştırıyoruz. Böylelikle tablomuzu liste haline getirmiş olduk. Bu örnekte tablomuz Sql1Tablo1 ismiyle oluştu. Son olarak aşağıdaki kodları buttonumuza ekliyoruz.
Private Sub CommandButton2_Click()
Call SqlSorgusu
Dim cn As Object
Dim rs As Object
Dim strFile$, strCon$, strSQL$
strFile = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFile & ";Extended Properties='Excel 12.0 Xml;HDR=YES';"
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cn.Open strCon
strSQL = TextBox1.Text
rs.Open strSQL, cn
Do While Not rs.EOF
r = r + 1
For c = 1 To rs.Fields.Count
If r = 1 Then
ActiveSheet.Cells(r + 2, c + 7) = rs.Fields(c - 1).Name
Else
ActiveSheet.Cells(r + 2, c + 7) = rs.Fields(c - 1).Value
End If
Next
If Not r = 1 Then rs.MoveNext
Loop
cn.Close
Set rs = Nothing
Set cn = Nothing
End Sub
Şimdi sıra geldi sql deyiminini tablo üzerinde uygulamaya. “select * from sql1Tablo1 where Cinsiyet='K'” deyimi tablomuzda cinsiyeti kız olanları listelemek için kullanılır.
|