Excel Formül Sorusu Sor

Bir Excel formülüne dair sorunuz varsa, bu alanı kullanarak bize iletin.

Excel Makro Sorusu Sor

Bir Excel VBA koduna dair sorunuz varsa, bu alanı kullanarak bize iletin.

Genel Excel Sorusu Sor

Excel'in ön sayfasındaki FORMÜL haricinde olan sorularınızı buradan sorabilirsiniz.
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 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.

image-20190224200425-1.webp


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.

Kod:
Görüntülemek için giriş yapmalısınız.
(4 satır)

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.

Kod:
Görüntülemek için giriş yapmalısınız.
(1 satır)

Ş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:

DurumDeğerAçıklama
adStateClosed0Nesne Kapalı.
adStateOpen1Nesne Açık.
adStateConnecting2Nesne Bağlanıyor.
adStateExecuting4Nesne Komut Çalıştırıyor.
adStateFetching8Nesneden Satırları Alınıyor.

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.

Kod:
Görüntülemek için giriş yapmalısınız.
(11 satır)

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.

Kod:
Görüntülemek için giriş yapmalısınız.
(10 satır)

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.

Kod:
Görüntülemek için giriş yapmalısınız.
(10 satır)

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.

image-20190224201302-2.webp


Ş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.

Kod:
Görüntülemek için giriş yapmalısınız.
(4 satır)

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?

Kod:
Görüntülemek için giriş yapmalısınız.
(14 satır)

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

image-20190224201630-3.webp


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.

Kod:
Görüntülemek için giriş yapmalısınız.
(15 satır)

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.

Kod:
Görüntülemek için giriş yapmalısınız.
(13 satır)

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.

Kod:
Görüntülemek için giriş yapmalısınız.
(6 satır)

Buradaki görüntüde, 1. yöntemin aynısı olacaktır.

Bu satıra geldiyseniz, makalemin tamamını okumuşsunuz demektir.
Teşekkür eder, faydalı olmasını temenni ederim.
Örnek dosyamı, Ado Bağlantı ve Kayıt Seti Açma Yöntemleri adresinden indirebilirsiniz.

Yapacağınız yorumlar, soracağınız sorular devamının gelmesi için motivasyon sağlayacaktır.
 
DMCA.com Protection Status
Geri
Üst