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

Excel programında ve VBA kodlamada kendinizi ileri düzeyde hissediyorsanız bu bölümü inceleyiniz

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

İleti#1)  Hakan Behcan » 12 Oca 2021 21:53

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
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Kullanıcı avatarı
Hakan Behcan
Yönetim Kurulu
 
Adı Soyadı:Hakan BEHCAN
Kayıt: 15 Haz 2008 01:31
Konum: Çerkezköy - Tekirdağ
Meslek: Belli bir meslek yoktur.
Yaş: 51
İleti: 1360
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Çerkezköy

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

İleti#2)  Bülent » 13 Oca 2021 07:35

Gözlerime inanamıyorum.
Kimleri görüyorum.
Ne güzel bir paylaşım bu böyle.
Eline sağlık. şkşk
Kullanıcı avatarı
Bülent
Yönetim Kurulu
 
Adı Soyadı:Bülent ÖZTÜRK
Kayıt: 15 Haz 2008 00:08
Meslek: Bilgi Sistemleri
Yaş: 44
İleti: 3818
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İst/Çekmeköy

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

İleti#3)  Murat OSMA » 13 Oca 2021 23:19

Ellerine emeklerine sağlık Hakan abi şkşk süpersin! [op]
Kullanıcı avatarı
Murat OSMA
Site Forum Yöneticisi
 
Adı Soyadı:Murat OSMA
Kayıt: 04 Arl 2008 22:34
Konum: İstanbul
Meslek: Excel & VBA Eğitmeni
Yaş: 36
İleti: 14412
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Bağcılar - İSTANBUL

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

İleti#4)  Hakan Behcan » 14 Oca 2021 18:46

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.
Kullanıcı avatarı
Hakan Behcan
Yönetim Kurulu
 
Adı Soyadı:Hakan BEHCAN
Kayıt: 15 Haz 2008 01:31
Konum: Çerkezköy - Tekirdağ
Meslek: Belli bir meslek yoktur.
Yaş: 51
İleti: 1360
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Çerkezköy

REKLAM
Excel Logo XML Oluşturucu
Logo Object Designer ile Uyarlama

Forum İleri Düzey

Online Kullanıcılar

Bu forumu görüntüleyenler: Kayıtlı kullanıcı yok ve 0 misafir

cron
Bumerang - Yazarkafe