SQL hakkında hızlı başvuru kaynağı

Excel-SQL Arasında Bağlantı Kurma

Veri Sekmesi ile SQL Server Bağlantısı Kurmak

Veri-> Verileri Al -> Veritabanından -> SQL Server Veritabanından'a tıklayın:

Excel-SQL Arasında Bağlantı Kurma

Varsa kullanıcı adı ve şifrenizi girin:

SQL

Üzerinde çalışmak istediğimiz tabloyu seçip Yükle'ye tıklayalım:

Bağlantı

Sonuç:

Sonuç

Makro Kullanarak SQL Server Bağlantısı Kurmak

Excel ile Sql Server arasında bağlantı kurmak için ADO (ActiveX Data Objects) kullanılır.

VBE'de References Bölümünden ActiveX Data Objects'in son sürümünü seçip OK'e tıklayın:

ADO

Öncelikle Veri Tabanı ile bağlantı kurmak gerekir. Bağlantı kurulduktan sonra sonra sorgulamalar yapabiliriz. Her bir sorgulama Recordset objesine dönüşür. Geriye sadece Recordset içindeki veriyi worksheet'e yazmak kalır:

Excel-SQL Arasında Bağlantı Kurma

Aşağıdaki linkten, Microsoft SQL Server ODBC Driver sekmesi altında, Sql Server bağlantı komutu görülebilir:


Not: ODBC (Open DataBase Connectivity), Microsoft SQL Server gibi bir dış veri kaynağına bağlamak için kullanabileceğimiz bir protokoldür.

Aşağıdaki gibi komut girip bağlantımızı gerçekleştiriyoruz

Sub makro_sql()

On Error GoTo HATA

Dim baglanti As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sunucu, veritabani, id, sifre, sorgu As String

sunucu = "DESKTOP-ABC1234\SQLEXPRESS"
veritabani = "ilkVeritabani"
id = "SA"
sifre = "1234"
sorgu = "SELECT * FROM [personel]"

'Aşağıdaki komut Windows authentication için geçerlidir.
baglanti.Open "Driver={SQL SERVER};Server=" & sunucu & ";Database=" & veritabani & ";"

'Aşağıdaki komut Sql Server authentication için geçerlidir.
'baglanti.Open "Driver={SQL SERVER};Server=" & sunucu & ";Database=" & veritabani & ";Uid=" & id & ";Pwd=" & sifre & ";"

'Parametreleri ayrı ayrı ayarlıyoruz
rs.ActiveConnection = baglanti
rs.Source = sorgu
rs.LockType = adLockReadOnly
rs.CursorType = adOpenStatic
rs.Open

'önce sayfa içeriğini siliyoruz
Cells.ClearContents

'Sütun başlıklarını ekliyoruz
Dim i As Long
For i = 0 To rs.Fields.Count - 1
    Range("A1").Offset(0, i).Value = rs.Fields(i).Name
Next i

'Sorguyu sayfaya yazdırıyoruz
Range("A2").CopyFromRecordset rs

'Bağlantıları kapatıyoruz
rs.Close
Set rs = Nothing
baglanti.Close
Set baglanti = Nothing
Exit Sub

HATA:
    MsgBox Err.Description

    If Not (rs Is Nothing) Then
        If (rs.State And adStateOpen) = adStateOpen Then rs.Close
        Set rs = Nothing
    End If
    If Not (baglanti Is Nothing) Then
        If (baglanti.State And adStateOpen) = adStateOpen Then baglanti.Close
        Set baglanti = Nothing
    End If

End Sub

Sonuç:

Sonuç:

Not: Data miktarının fazla olmasına karşı aşağıdaki komutun sonuna 5 yazarak data sayısını 5 ile sınırladık:

Range("A2").CopyFromRecordset rs, 5

Sonuç:

Sonuç:

BAĞLANTI PARAMETRELERİ

CursorType

CursorType, arama yönünü ve verinin görüntüleme tipini ifade eder:
  • adOpenForwardOnly: Default şeçenek budur. Sadece ileri yönlü hareket eder. Aksi gerekmedikçe bu seçenek kullanılarak daha hızlı erişim sağlanır.
  • adOpenStatic: Bu seçenek tüm yönlere izin verir ve başkaları tarafından yapılan değişiklikler o an size görünmez. Yani siz veriye eriştiğiniz anda ilgili veri setinin resmi çekilir ve siz hep onu görürsünüz.
  • adOpenDynamic: Bu seçenek tüm yönlere izin verir ama bu sefer başkaları tarafından yapılan değişiklikler size anında görünür.
  • adOpenKeyset: adOpenDynamic’e benzer, ama silinen veya eklenenler size o an görünmez, sadece değişiklikleri görebilirsiniz.

LockType

LockType, kayıtlar güncellenirken ne tür kilit konacağını ifade eder. Çok kullanıcının eriştiği bir dosyada aynı anda birden çok kullanıcı dataya erişmeye veya değiştirmeye çalışırsa nasıl davranılması gerektiğini belirler.
  • adLockReadOnly :Default seçenek budur. Kayıtlar herkeste salt okunur açılır ve kimse güncelleyemez.
  • adLockOptimistic: Update sırasında(Update metodu çağrıldığında) kilitler. Başkaları da o sırada görebilir ve güncelleyebilir.
  • adLockPessimistic: Güncellemeye başladığınız anda kilitler. Başkaları o sırada bu kaydı okuyamaz ve güncelleyemez.
  • adLockBatchOptimistic: adLockOptimistic’in aynısıdır, sadece toplu güncelleme yapıldığında kullanılır.

Paylaş:

Ara

Son eklenen

Excel-SQL Arasında Bağlantı Kurma

Veri Sekmesi ile SQL Server Bağlantısı Kurmak Veri-> Verileri Al -> Veritabanından -> SQL Server Veritabanından'a tıklayın: Var...