ADO ile Başlangıç

Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
ADO İLE BAŞLANGIÇ

ADO ile bir tabloyu kullanmak için aktif proje dosyasının Connection nesnesine bir başvuru yapılıyor.

Kod:
Dim rs As New ADODB.Recordset 
rs.Open "Table1", CurrentProject.Connection
Bir tabloyu ya da veri kümesini açmak ve kullanmak için alternatif var. ADO’da bu alternatifleri iyi bilmemiz gerekiyor.

Bir tabloyu sadece okunabilir olarak açmak:

Kod:
rs.Open "Table1", CurrentProject.Connection, adOpenKeyset, adLockReadOnly
Bir tabloyu kayıt ekleme, silme ya da değiştirme için açmak:

Kod:
rs.Open "Table1", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Sadece okunabilir bir SQL kodu açmak:

Kod:
rs.Open "SELECT * FROM Table1 WHERE ...", CurrentProject.Connection, adOpenKeyset, adLockReadOnly
Kayıt eklenebilecek, silinebilecek ya da değiştirilebilecek şekilde bir SQL kodu açmak:

Kod:
rs.Open "SELECT * FROM Table1 WHERE ...", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
KAYIT DEĞİŞİKLİKLERİ
Kayıt ekleme yapılabilmesi için tablo açılırken adLockOptimistic parametresi kullanılmalı.

Kod:
rs.Open "Table1", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
rs.AddNew
rs("Field1") = "Test"
rs("Field2") = 1234
rs.Update
Kayıt silme:

Kod:
rs.Delete
Kayıt değiştirmek doğrudan değişikliğe geçiliyor.

Kod:
rs.Open ...
rs("Field1") = "Test"
rs("Field2") = 1234
rs.Update
ADO İLE SQL KODU ÇALIŞTIRMAK

. CurrentProject.Connection deyimini kullanarak bir SQL kodunu çalıştırmak için (Execute) deneyin.

Kod:
Dim conn As ADODB.Connection
Set conn = CurrentProject.Connection
conn.Execute "UPDATE Table1 SET ad = 'deneme' WHERE (ID='1');"
ya da

Kod:
CurrentProject.Connection.Execute "UPDATE Table1 SET ad = 'deneme' WHERE (ID='1');"

SQL İLE ARAMA YAPMAK

SQL kodu içinde arama yapmak için WHERE dışında LIKE deyiminin de kullanılabileceğini biliyorsunuzdur. Eskiden LIKE deyiminde metin alanlarında ayrıntılı arama için * işareti kullanılırdı. Şimdiyse bunun yerine % işareti kullanılıyor. (SELECT deyiminin yanında * işareti kullanılır. Bu değişiklik sadece LIKE deyimi için geçerli.)

Şu deyim ile bir SQL kodunu kayıt değişiklikleri yapılabilecek şekilde açabilirsiniz:

Kod:
rs.Open "SELECT * FROM Table1 WHERE (AdiSoyadi Like 'A%'));", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
En sondaki adLockOptimistic deyimini adLockReadOnly yaparsanız kayıt kümesi sadece okunur olacaktır.

LIKE deyiminin yanındaki ‘A%’ ifadesi ile AdiSoyadi alanında ‘A’ ile başlayan kayıtlar seçiliyor. Değiştirip ‘[A-K,U-Z]%’ şeklinde kullanmanız da mümkün. Yani hem A-K arası, hem de U-Z arası değerlerin olduğu kayıtlar elde ediliyor.

LIKE deyiminden sonra bir de şunu yazmayı deneyin:

‘%A_[M,T]%’

Bu şekilde yapıldığında herhangi bir yerinde ‘A’ ve yanında herhangi bir karakter olup onun yanında da ‘M’ veya ‘T’ olan değerlerin bulunduğu kayıtlar listelenecektir. Mütevazı LIKE deyiminin eskiden kalma daha birçok yeteneği var.

TABLO YA DA KAYIT KÜMESİ ÜZERİNDE ARAMA YAPMAK

Kayıt kümesinde arama yapmaktan kasıt, SQL kodu kullanmadan, elde ettiğimiz kayıt kümesi (RecordSet) açıldıktan sonra arama yapılması. Bu komutların tümü Find adlı yeni komut altında toplanmış. Find komutu değişik parametreler alarak eski komutların işini yapabiliyor.

Arama işlemini başlatmadan önce tabloda kayıt olup olmadığı kontrol ediliyor. Zira kayıt yoksa MOVEFIRST komutu hata verir. Zaten herhangi bir anda ilk kaydı bulmak için tablonun başına gidilmesi gerekli.

Kod:
Dim rs as New ADODB.Recordset

rs.Open "Kisiler", CurrentProject.Connection, adOpenKeyset, adLockOptimistic

If rs.EOF = True Then
MsgBox "Tabloda kayıt yok." 
Else

rs.MoveFirst
rs.Find Kriter, 0

If rs.EOF = True Then
MsgBox "Kayıt bulunamadı."
Else
'Tüm kayıtları sırayla bul ve mesaj göster.
Do While Not rs.EOF
MsgBox "Kayıt bulundu." & vbCr & vbCr & rs("ID") & " " & rs("Ad") & " " & rs("Soyad")
'Sonraki kayıttan itibaren tekrar ara.
rs.Find Kriter, 1
Loop
End If
End If
rs.Close
Set rs = Nothing
İlk kaydı bul (FindFirst):

Kod:
rs.MoveFirst
rs.Find “Kriter”, 0, adSearchForward
Sonrakini bul (FindNext):

Kod:
rs.Find “Kriter”, 1, adSearchForward
Öncekini bul (FindPrevious):

Kod:
rs.Find “Kriter”, 1, adSearchBackward
Son kaydı bul (FindLast):

Kod:
rs.MoveLast
rs.Find “Kriter”, 0, adSearchBackward
Aradığınız kaydın bulunup bulunamadığını anlamak için, eğer ileri doğru arama yapıyorsanız kümenin sonunda (rs.EOF=True ? ) olup olmadığınızı, geri doğru arama yapıyorsanız kümenin başında (rs.BOF=True ? ) olup olmadığınızı kontrol etmelisiniz.

BOŞ KAYITLAR GELSİN

NULL deyimi boş değerleri yani ‘hiçbirşey’i ifade ediyor. ADO’nun SQL kodlarında bu deyimle beraber eşitlik işaretleri kullanılıyor.

Kod:
‘VeriAlani1 = NULL’
‘VeriAlani1 <> NULL’
Son olarak NEW ya da CREATEOBJECT deyimi ile oluşturduğunuz Connection ve Recordset nesnelerini NOTHING ile silmeyi unutmayın.

Kod:
Set rs = Nothing
Set conn = Nothing
ADO o kadar ayrıntılı ki tam olarak anlatana kadar daha çok örnek yapmamız gerekiyor.


Yazının Temeli alıntıdır. Üstünde değişiklikler yapılmıştır. modalı
 

muzaffer.sm

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
371
Excel Vers. ve Dili
Microsoft Office Professional Plus 2016 TR
Altın Üyelik Bitiş Tarihi
07-12-2024
Sayın Modalı


Güzel bir başlangıç yapmışsınız.Tebrikler.
Kişiler bilgi birikimlerini beyinlerinde barındırırken bilmeyenlerede aktarsınki bilmeyenlerde öğrensin.Balık tutmayı öğretmiş olursunuz ki işte o zaman insanlar elindeki oltası ile kendi balığını kendisi tutsun.

Buradaki açmış olduğunuz bu konulu dersin ve öğretiminizin devamını dediğiniz gibi örneklerle ve açıklamalarla pekiştirilecek bir şekilde zamanlarınızın elvermesi koşulu sizlerden ayrıca rica ederiz. Dolayısıyla bilenle bilmeyen bir olurmu felsefesi ile hareket ediyoruz.



Saygılarımla
 
Katılım
9 Ocak 2006
Mesajlar
83
ya bu find özelliği tam olarak nasıl kullanılıyor. ben mesala içerisinde ramazan olan kaydı bulmasını istiyorum. bunu nasıl yaparız?
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
ya bu find özelliği tam olarak nasıl kullanılıyor. ben mesala içerisinde ramazan olan kaydı bulmasını istiyorum. bunu nasıl yaparız?
Sayın ramazanyurt,

Find daki kriter cümlelerine örnekler:

"Country='Norway'"
"Date>#7/22/97#"
"Country LIKE N*"

siz adı alanında arama yapacaksanız:

"adi='ramazan'"

kullanılabilir.

0 yazıldığında arama bulunulan kayıttan başlar.

İyi çalışmalar
 
Üst