ADO Bağlantı ve Kayıtseti Nesnelerinin Açılması

Bu makalemiz Excel’de hız severlere yönelik olarak hazırlanmış olup, ADO Bağlantı ve Kayıtseti Nesnelerinin Açılması işleminin nasıl yapılacağını öğretir.

ADO ve VBA hakkında ne kadar çok bilgiye sahipsek, bunların nimetlerinden de o derece yararlanabiliriz. Vba’da ADO ile başarılı uygulamalar geliştirebilmek için SQL konusunda temelin az üzerinde, Vba konusunda da ortalama üzeri bir bilgi ve beceriye sahibi olmamız gerekiyor. Bu nedenle verilen örneklerde Vba komutları veya SQL komutları açıklanmayacaktır.

ADO Bağlantı ve Kayıtseti Nesnelerinin Açılması


ADO bağlantı ve kayıtseti nesnelerini açmak için birkaç değişik yöntem kullanabiliriz.
Şimdi D:\exceldepo\exceldepodb.mdb yolunda bir Access mdb database dosyamız olduğunu düşünelim. (siz bu yolu istediğiniz gibi ayarlayabilirsiniz)
Tablomuzdaki alanlar ve veriler de aşağıdaki resimdeki gibi bir yapıda olsun.

ADO Kayıt Seti

VBA ortamında da bir modül ekleyelim ve sayfa başına aşağıdaki tanımlamaları yazalım. Modül olması şart değil, sayfa ve form da olabilir.
Dim BagMetin As String, Sorgu As String
Dim Baglanti As New ADODB.Connection
Dim KSeti As New ADODB.Recordset
Dim SqlKomut As New ADODB.Command
Burada nesneleri peşin peşin oluşturdum. Prosedür içinde ayrıca yeni nesne oluşturmaya gerek kalmayacak. Tanımlamaları prosedür içinde de yapabiliriz, ben dışında yapmayı tercih ettim.
Set Baglanti = New ADODB.Connection
Şimdi ADO bağlantı ve kayıtseti nesnelerini açmak için yöntemleri inceleyelim. Başka yöntemler de olabilir ancak en çok kullanılanları ele alacağız.
Bu arada Command, Connection, Record, Recordset ve Stream nesnelerinin durumlarını State özelliği ile öğrenebiliriz. Döndürülen değerler aşağıdaki gibi olacaktır:

BİR BAĞLANTI (ADODB.CONNECTION) NESNESİN AÇILMASI


Bir veritabanında işlem yapabilmek için önce bir bağlantı metnini ihtiyaç duyarız. Nasıl bağlanabiliyoruz bir bakalım.

1. Bir bağlantı (connection) nesnesini bağlantı metnine (connection string) eşitleyerek

Modül içinde aşağıdaki gibi Baglan adında bir prosedür yazalım. BagMetin değişkeni ve nesneleri sayfa başında tanımlamıştık.
Prosedürde önce BagMetin değişkenine bağlantı metnini atıyoruz. Burada bağlanacağımız veritabanı Excel sayfasıda, txt metni de, mysql veya mssql veritabanı sunucu da olabilir. Ben basitlik amacı ile mdb dosyası seçtim. Sonra tanımladığımız Baglantı nesnesinin (ADODB.Connection) ConnectionString özelliğine BagMetin değişkenini veya doğrudan bağlantı metnini eşitliyoruz. Bağlantıyı açıyoruz ve sonraki satırda Baglanti nesnesinin State (durum) özelliğini MsgBox ile görüntülüyoruz. Ekranda 1 yazıyorsa bağlantı açık demektir. Sonra bağlantı nesnesini kapatıp hafızadan siliyoruz be prosedürü sonlandırıyoruz.
Sub Baglan1()

 BagMetin = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\exceldepo\exceldepodb.mdb"
 Baglanti.Open BagMetin
 
 MsgBox Baglanti.State
 
 Baglanti.Close
 Set Baglanti = Nothing

End Sub

2. Open() yöntemi yanında bir bağlantı metni veya metni içeren bir string değişken vererek

Bu yöntemde Bağlantı nesnesinin Open özelliğinden sonra bağlantı metnini yazıyoruz. Bir önceki yöntemden farkı, ConnectionString özelliğinin ayrıca tanımlanmaması sayılabilir. Bir satır daha az kod yazarız.
Sub Baglan2()

 Baglanti.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\exceldepo\exceldepodb.mdb"
 
 MsgBox Baglanti.State
 
 Baglanti.Close
 Set Baglanti = Nothing

End Sub
3. Bağlantı (connection) nesnesinin Open() komutundan sonra doğrudan bağlantı metnini vererek

Bu yöntem bir önceki yöntemle birebir aynıdır. Burada Bağlantı metni Open özelliğinden sonra doğrudan tırnak içinde yazılmıştır. Burada da bir satır azalttık kodu.
Sub Baglan3()

 Baglanti.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\exceldepo\exceldepodb.mdb"
 
 MsgBox Baglanti.State
 
 Baglanti.Close
 Set Baglanti = Nothing

End Sub
Bağlantı (ADODB.Connection) nesnesin açılmasını gördük. Bir veritabanınada işlem yapmak için bağlantımızı yapmayı öğrendik. Şimdi de kayıt seti (ADODB.Recordset) nesnesinin açılmasını görelim.

BİR KAYIT SETİ (ADODB.RECORDSET) NESNESİN AÇILMASI


Önce biraz hazırlık yapalım. Excelde Vba pencersinde Proje pencersinde Forms projelerine aşağıdaki bir user form ekleyelim. Deneyeceklere kodları okumada kolaylık açısından butonların ve listebox adını form üzerinde yazdım. Properties penceresinden Lisboxun columncount özelliğine 5 yazıyoruz.

ADO Nesnesi

Şimdi de uzatmadan kayıt seti açma yöntemlerine geçelim. Bağlantıyı yukarıda bahsettiğimiz istediğimiz bir yöntemle açabilirsiniz. Buradaki örneklerde 3. Yöntemi kullanacağız. Kod sayfası başına aşağıdakileri yazıyoruz yine. Her prosedürde de kod başlangıcında listboxtaki verileri temizleyeceğiz.
Dim BagMetin As String, Sorgu As String
Dim Baglanti As New ADODB.Connection
Dim KSeti As New ADODB.Recordset
Dim SqlKomut As New ADODB.Command

1. Kayıtsetini CONNECTION.EXECUTE Metodu ile Açma

Bu yöntem oldukça hızlı ve pratiktir. Veritabanını çok az meşgul eder. Örneğin kayıtsetinin getrows özelliği ile listboxları belki 25 kat yada daha hızlı doldurabilirsiniz. Kodları inceleyelim.
Bağlantı nesnesini sql sorgusuyla execute ederek sonuçları Kseti adlı kayıtsetine alıyoruz. Burdan listbox’un column özelliğne kayıtsetinin GetRows özelliğini atıyoruz ve veriler listboxta. Kayıtseti ve diğerlerini kapatıp hafızadan siliyoruz. Aslında ne kadar az kodla ne kadar çok iş yaptık değil mi?
Private Sub btnMtd1_Click()

 Me.ListBoxExcelDepo.Clear
 Sorgu = "SELECT * FROM Ilceler"
 Baglanti.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\exceldepo\exceldepodb.mdb"
 
 Set KSeti = Baglanti.Execute(Sorgu)
 Me.ListBoxExcelDepo.Column = KSeti.GetRows
 KSeti.Close
 
 Baglanti.Close
 Set Baglanti = Nothing

End Sub
Elde ettiğimiz çıktı aşağıdaki gibi olacaktır:

ADO Sonuç

2. Kayıtsetini ADODB Command.Execute Metodu İle Açma

Bu yöntemde SqlKomut adında bir ADODB.Command nesnesi tanımlıyoruz ve sorguyu kamuta verip kayıtsetini bununla açıyoruz. SqlKomut.Execute(Sorgu) satırına dikkat edelim.
Private Sub btnMtd2_Click()
 Me.ListBoxExcelDepo.Clear
 Sorgu = "SELECT * FROM Ilceler"
 Baglanti.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\exceldepo\exceldepodb.mdb"
 
 SqlKomut.ActiveConnection = Baglanti
 SqlKomut.CommandText = Sorgu
 
 Set KSeti = SqlKomut.Execute(Sorgu)
 Me.ListBoxExcelDepo.Column = KSeti.GetRows
 
 
 Baglanti.Close
 Baglanti.Close: KSeti = Nothing
End Sub
1. yöntemdeki ile aynı görüntüyü elde edeceğiz.

3. Kayıtsetini Recordset.Open ve Command.Execute Metodu İle Açma

Burada KSeti.Open SqlKomut satırına dikkat edelim. Kayıtsetini açarken yanında komut nesnesini veriyoruz.
Private Sub btnMtd3_Click()
 Me.ListBoxExcelDepo.Clear
 Sorgu = "SELECT * FROM Ilceler"
 Baglanti.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\exceldepo\exceldepodb.mdb"
 
 SqlKomut.ActiveConnection = Baglanti
 SqlKomut.CommandText = Sorgu
 
 KSeti.Open SqlKomut

 Me.ListBoxExcelDepo.Column = KSeti.GetRows 
 Baglanti.Close
End Sub
Buradaki görüntüde, 1. yöntemin aynısı olacaktır.

4. Bağlantı ve Kayıtsetini Aynı Satırda Vererek Açma

Burada KSeti.Open "SELECT * FROM Ilceler", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\exceldepo\exceldepodb.mdb" satırına dikkat edelim. Her şeyi tek satırda verdik. Tabiki Kseti.Open dan sonra sorguyu ve bağlantı metnini içeren değişkeleri de yazabilirdik. Burada bağlantıyı açmadığımız için kapatmaya da gerek yok.
Private Sub btnMtd4_Click()
 Me.ListBoxExcelDepo.Clear
 KSeti.Open "SELECT * FROM Ilceler", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\exceldepo\exceldepodb.mdb"
 Me.ListBoxExcelDepo.Column = KSeti.GetRows
 KSeti.Close
End Sub
Buradaki görüntüde, 1. yöntemin aynısı olacaktır.

ADO Bağlantı ve Kayıtseti Nesnelerinin Açılması


Bu satıra geldiyseniz, makalemin tamamını okumuşsunuz demektir.
Teşekkür eder, faydalı olmasını temenni ederim.
Örnek dosyamı, https://www.exceldosyalari.com/ado-baglanti-ve-kayit-seti-acma-yontemleri adresinden indirebilirsiniz.

Yapacağınız yorumlar, soracağınız sorular devamının gelmesi için motivasyon sağlayacaktır.
#ADO Bağlantı ve Kayıtseti Nesnelerinin Açılması
Üstteki alanda, Google Reklamları yerine sizin reklamınızın yayınlanmasını ister misiniz?
Reklam vermek istiyorum

Daha önce yorum yapılmamış!

Excel'de büyük rakamlar ile çalışırken, sayılar binlik ya da milyonluk rakamlara bölünerek çalışılır. özellikle Finans departmanlarında çok sık kullanılan bir yöntemdir.
Bunu yapmak için sayının olduğu hücrenin yanına =A1/1000 şeklinde bir formül yazabilirsiniz.
Ama başka bir hücre kullanmadan, aynı hücrede bine ya da milyona bölünmüş olarak görünmesini isterseniz;
  1. Aktif hücre seçiliyken sağ tık, Hücre Biçimlendirme,
  2. Sayı Sekmesinden İsteğe Uyarlanmış bölümüne tıklama,
  3. Yan kısımdaki alana, #.##0. yazmamız ve tamam dememiz yeterli olacaktır.
Hücrede, 125.000.000 şeklinde yazılı olan veri, görünümde, 125.000 şeklinde olacaktır.

Not: Eğer binlik ayracınız nokta (.) yerine virgül (,) ise, #,##0, yazmanız gerekir.
Yükleniyor...