Microsoft Access Ms Office Pro ve üzeri sürümleri ile gelen ücretli bir yazılımdır. Günümüzde veritabanı sunucuları arasında mysql en pratiklerinden olsa da MSSQL de oldukça fazla kullanılmaktadır Mssql Server Express Edition versiyonları kısıtları olsa da ücretsizdir. Muhasebe yazılımları, ERP'ler, Personel yazılımları gibi pek çok profesyonel yazılım verilerini mssql veritabanlarında tutar. SQL ile uğraşanlardan sanırım duymayan yoktur. Microsoft bir de SQL Server Management Studio gibi free bir veritabanı aracı sunar ki işlerimizi oldukça kolaylaştırır.
MSSQL Serveri bilgisayarımıza kurduğumuzda sunucu olarak ön tanımlı TCP 1433 portundan hizmet verir. Bu esnada bilgisayarın kaynaklarını kullanır ve eski bilgisayarları da yavaşlatır. Server'a istek olarak bir sql sorgu metni gönderilir, sorgu serverda çalışarak veri üretilir ve veri istemciye gönderilir. Veritabanı dosyası sunucu diskinde mdf uzantılı olarak tutulur, istemcinin veri tabanı dosyası ile alakası yoktur.
mssql veritabanının yetenekleri acces mdb ile kıyaslanamayacak kadar fazladır. önce mdb dosyası oluşturup sonra sunucuya yükleme şansımız yoktur, ancak mdb yi sql veritabanına çeviren uygulamalarla mümkün olur. Oysa kapalı, sunucuda çalışmayan bir mdf dosyası dosyası oluşturup ado ile bu dosyada işlem yapabilir, dilediğimiz zaman da doğrudan sunucuya yükleyip yayınlayabiliriz. Eğer veritabanı tek bilgisayarda kullanılacak ise yayınlamaya da gerek yoktur. Sql serverin mdf dosyasını kullanmamıza imkan sağlayan LocalDB uygulamasını kurabiliriz.
Bu yazıda hem LocalDB kurulumunu hem de ADO ile bağlanılması anlatılacaktır.
Öncelikle Microsoft® SQL Server® 2017 Express indirip kuralım, daha yeni versiyonları da var tabi, isteyen kurabilir.
https://www.microsoft.com/en-us/downloa ... x?id=55994 bağlantısından kurulumu indirip çalıştırıyoruz ve Download Media yı seçiyoruz.
Sonra gelen ekranda;
LocalDB uygulamasını indirip bilgisayarımıza kuruyoruz.
Artık LocalDb miz hazır.
Şimdi;
SQL Server Management Studio (SSMS) indirip kuralım
https://docs.microsoft.com/en-us/sql/ss ... rver-ver15
Sunucu kısmına (LocalDB)\MSSQLLocalDB yazalım ve Connect'e tıklayalım.
Karşımıza aşağıdaki ekran gelecektir.
Bu aşamada henüz bir veritabanımız tanımlı değildir. excelvba adında bir veritabanı oluşturalım.
Sonra user adında bir tablo oluşturup alanlarını aşağıdaki gibi tanımlayalım ve kaydedelim.
Ben hatayla excelvba yerine exevba adında bir tablo oluşturmuşum, yazıda düzelttim ancak resimde öyle kaldı.

Tablo alanlarına veri girelim.
Sonra excelde bir sayfa açıp, vba pencersinde referanslara ADO yu ekleyip bir modülde aşağıdaki kodu yazalım ve çalıştıralım.
- Kod: Tümünü seç
Sub SampleTest()
Dim oConn As New ADODB.Connection
Dim oRs As New ADODB.Recordset
Dim sConn As String, sSQL As String
oConn.Open "Provider=SQLNCLI11;Data Source=(LocalDB)\MSSQLLocalDB;Integrated Security=SSPI;Initial Catalog=excelvba" 'AttachDbFilename=D:\process\Data\exvba.mdf;
sSQL = "SELECT * FROM [excelvba].[dbo].[user]"
Set oRs = oConn.Execute(sSQL)
Sayfa1.Range("A2").CopyFromRecordset oRs
oRs.Close
oConn.Close
Set oRs = Nothing
Set oConn = Nothing
End Sub
Kodda "Initial Catalog=excelvba;" kısmını kaldırıp "'AttachDbFilename=D:\process\Data\exelvba.mdf;" kısmını aktif edersek istediğimiz klasördeki bir kapalı mdf dosyasına da bağlanabiliriz.
ve karşımıza çıkan ekran
Evet kapalı mdf dosyası oluşturup, excel ile veri alışverişi yapan bir örnek uygulama yaptık.
Umarım işinize yarayan bir makale olur.
Hakan Behcan