VBA - Excel ile SQL

 


Youtube da izleyebilirsin..

SQL, veritabanından bilgi okumak, veritabanına bilgi yazmak veya bilgiyi değiştirmek amacıyla kullanılan standart bir dildir. SQL öğrenmek için ilk aşamada SQL server kurmanıza gerek yok, sadece Excel kullanarak bu konuya giriş yapabilirsiniz. 

ADO bileşeni ile Excel'den MSSQL server, MSACCESS veya Excel sayfasına bağlantı kurabilirsiniz. VBA kodunda sadece bağlantı bilgisini (connection string) içeren satırı değiştirmeniz yeterli olacaktır. 

MSSQL server için bağlantı bilgisi :

connectionString = "Driver={SQL Server};Server=servername;Database=databasename;Uid=sa;Pwd=password;"



Alt+F11 ile ulaştığımız VBA kod sayfasında Tools > References bölümünde Microsoft ADO Library kütüphanesini seçmeniz gerekiyor.. 

Örnek .xlsm uzantılı dosyayı buradan indirebilirsiniz.. Dosyayı açarsanız Security Risk uyarısı verecek ve VBA kodu çalışmayacaktır. Sağ klik ile dosya özelliklerine tıklayın ve resimdeki gibi en altta bulunan kutucuğu işaretleyin, ardından tamam butonuna tıklayın.




SELECT FOOD, FOODID FROM [GIDA$] WHERE CALORIES > 900

Bu sorgu sonucu SONUC sayfasında gösterilecektir. SELECT komutundan sonra * yazınca tüm kolonlar gelir, FOOD, FOODID yazınca sadece iki kolon gelecek, listelenen yiyeceklerin kalorisi 900 üzerinde olacaktır.. 




Dosya açılınca sorgulama formu gözükecektir, formun dosya açılınca açılmasını sağlayan kod, kodlama penceresinde ThisWorkbook içinde bulunmaktadır..



SELECT sorgusu ile veritabanında istenen kriterlere göre filtreleme yapabiliyoruz.
Artık aşağıdaki SELECT sorgularını formu kullanarak yapabilirsiniz.

SELECT DISTINCT FOODTYPE FROM [GIDA$]

SELECT COUNT(*) AS ROW_COUNT FROM [GIDA$] WHERE FOODTYPE = 'BEVERAGES'

SELECT * FROM [GIDA$] WHERE FOODTYPE = 'BEVERAGES'

SELECT * FROM [GIDA$] WHERE FOODTYPE = 'BEVERAGES' AND CALORIES > 450

SELECT * FROM [GIDA$] WHERE FOODTYPE LIKE '%PASTA%' ORDER BY FOOD DESC

SELECT * FROM [GIDA$] WHERE FOODTYPE LIKE '_ER%'

SELECT FOODTYPE, AVG(CALORIES) AS AVG_CALORIES FROM [GIDA$] GROUP BY FOODTYPE

SELECT FOOD, FOODID FROM [GIDA$] WHERE CALORIES > 900

SELECT NOW() 

SELECT 'TODAY IS ' + CSTR(DATE())

SELECT YEAR(DATE()) AS YIL

SELECT DATEPART('M', #25-6-1993#) AS AY


Tarih ile ilgili komutlar Excel ve SQL server için farklı gözüküyor.. Bu komutlar örneğin SQLite veya MySQL için de farklılık gösterecektir. Yukarıdaki tarihle ilgili olmayan SELECT sorguları ise her tip SQL ortamında çalışacaktır..

MSSQL server basit kurulumu ve temel sql komutlarının anlatıldığı bu youtube videosunu izlemenizi tavsiye ederim. 

SQL ile ilgili daha detaylı VBA kodlama bilgileri öğrenmek isterseniz, linkteki youtube playlist işinize yarayacaktır..

Yorumlar

Bu blogdaki popüler yayınlar

VBA - Mscomm (seri port) ile veri loglama

RJ45 2 - Novexx barkod yazıcıya, S7-1200 plc ile etiket yazdırma

Uzak I/O modülü olarak PLC kullanmak