Macro'yla SQL Veritabanından Excel'e Kayıt Getirme
go
use OKYS -- Kullanılacak veritabanının seçilmesi
create table Kisiler -- Kolonları ile beraber Kisiler tablosu oluşturulması
(KisiID integer identity(1,1) primary key, -- Primary key olan tamsayı veri tipli otomatik artan KisiID
KisiAdi varchar(15) not null, -- Boş bırakılamaz olan 15 karakterlik KisiAdi kolonu
KisiSoyadi varchar(15) not null, -- Boş bırakılamaz olan 15 karakterlik KisiSoyadi kolonu
DogumTarihi date not null, -- Boş bırakılamaz olan tarih veri tipli DogumTarihi kolonu
TCKimlikNo char(11) not null unique -- Boş bırakılamaz ve Unique olan 11 karakterlik TCKimlikNo
);
insert into Kisiler values -- Kisiler tablosuna 4 kayıt eklenmesi
('Ahmet', 'Yılmaz', '1996/06/16', '12345678919'),
('Mehmet', 'Yıldırım', '1997/07/17', '12345678929'),
('Hasan', 'Yıldız', '1995/05/15', '12345678939'),
('Hüseyin', 'Yüksel', '1998/08/18', '12345678949');
Sub GetDataFromDatabase()
Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
Set con = New ADODB.Connection 'Bağlantı nesnesinin oluşturulması
Set rs = New ADODB.Recordset 'Kayıt kümesi nesnesinin oluşturulması
strCon = "Provider=SQL Server Native Client 11.0;"
strCon = strCon & "Data Source=SINANDILAVER;" 'Sunucu Adı
strCon = strCon & "Initial Catalog=OKYS;" 'Veritabanı Adı
strCon = strCon & "Integrated Security=SSPI"
con.Open (strCon) 'Veritabanına bağlantının kurulması
strSQL = "SELECT * FROM Kisiler" 'Veritabanından okuma sorgusu
rs.Open strSQL, con 'Kayıtların okunması
'Başlık satırının hazırlanması
ActiveSheet.Range("A1:D1").Font.Bold = True
ActiveSheet.Range("A1").Value = "Adı"
ActiveSheet.Range("B1").Value = "Soyadı"
ActiveSheet.Range("C1").Value = "TC Kimlik No"
ActiveSheet.Range("D1").Value = "Doğum Tarihi"
r = 2 'Başlangıç satırını belirlenmesi
Do Until rs.EOF 'Sonuncu kayıta kadar Loop satırına kadarki işlemleri yap
ActiveSheet.Range("A" & r).Value = rs!KisiAdi 'Kişi Adını ilgili satırdaki A kolonuna ata
ActiveSheet.Range("B" & r).Value = rs!KisiSoyadi 'Kişi Soyadını ilgili satırdaki B kolonuna ata
ActiveSheet.Range("C" & r).Value = rs!TCKimlikNo 'TCKimlikNo'yu ilgili satırdaki C kolonuna ata
ActiveSheet.Range("D" & r).Value = rs!DogumTarihi 'Doğum Tarihi'ni ilgili satırdaki D kolonuna ata
r = r + 1 'Satır numarasını 1 artır
rs.MoveNext 'Sonraki kayıta git
Loop 'Do satırına dön
rs.Close 'Kayıt kümesinin kapatılması
con.Close 'Bağlantının kapatılması
End Sub
'----------------------------------------------------------------------------------------------------------------------
Prosedür