1 sayfadan 1. sayfa

Excel ADO ile Sql Server mdf veritabanına (LocalDB) Bağlantı

İletiTarih: 12 Oca 2021 21:53
Hakan Behcan
Excel'de ADO ile kapalı excel dosyasından text dosyasına, mssql servera, postresql'e, mysql'e, bağlanılanacak ne varsa bağlandık. En çok da Access mdb dosyalarına bağlandık. Çünkü Access ile mdb ya da accdb uzantılı veritabanları ve tabloları, alanları oluşturup vba da userformlarda veya sayfalarda kullanmak oldukça pratik idi.

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.

sqlserverexpress1.jpg


Sonra gelen ekranda;

sqlserverexpress2.jpg


LocalDB uygulamasını indirip bilgisayarımıza kuruyoruz.

Artık LocalDb miz hazır.

LocalDB1.jpg



Şimdi;
SQL Server Management Studio (SSMS) indirip kuralım

https://docs.microsoft.com/en-us/sql/ss ... rver-ver15

SSMS1.jpg


Sunucu kısmına (LocalDB)\MSSQLLocalDB yazalım ve Connect'e tıklayalım.

Karşımıza aşağıdaki ekran gelecektir.

SSMS2.jpg


Bu aşamada henüz bir veritabanımız tanımlı değildir. excelvba adında bir veritabanı oluşturalım.

SSMS3.jpg


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ı. :(

SSMS5.jpg


Tablo alanlarına veri girelim.

SSMS6.jpg


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
SSMS7.jpg


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

Cevap: Excel VBA ile Sql Server mdf veritabanına (LocalDB) B

İletiTarih: 13 Oca 2021 07:35
Bülent
Gözlerime inanamıyorum.
Kimleri görüyorum.
Ne güzel bir paylaşım bu böyle.
Eline sağlık. şkşk

Cevap: Excel ADO ile Sql Server mdf veritabanına (LocalDB) B

İletiTarih: 13 Oca 2021 23:19
Murat OSMA
Ellerine emeklerine sağlık Hakan abi şkşk süpersin! [op]

Cevap: Cevap: Excel ADO ile Sql Server mdf veritabanına (Loc

İletiTarih: 14 Oca 2021 18:46
Hakan Behcan
Bülent yazdı:Gözlerime inanamıyorum.
Kimleri görüyorum.
Ne güzel bir paylaşım bu böyle.
Elime sağlık. şkşk



Murat OSMA yazdı:Ellerine emeklerine sağlık Hakan abi şkşk süpersin! [op]


Sağolun arkadaşlar.

Türkçe sitelerde baktım örneğini bulamadım. Belki herkes biliyordur da kimse yazmamıştır bir yere veya ben yeterince araştırmamışımdır.
Visual Studio'da LocalDB kullanılıyor, Excelde ADO ile kullanabilir miyiz diye 3 gün uğraştım sonunda oldu.