ADO İLE BAŞLANGIÇ
ADO ile bir tabloyu kullanmak için aktif proje dosyasının Connection nesnesine bir başvuru yapılıyor.
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:
Bir tabloyu kayıt ekleme, silme ya da değiştirme için açmak:
Sadece okunabilir bir SQL kodu açmak:
Kayıt eklenebilecek, silinebilecek ya da değiştirilebilecek şekilde bir SQL kodu açmak:
KAYIT DEĞİŞİKLİKLERİ
Kayıt ekleme yapılabilmesi için tablo açılırken adLockOptimistic parametresi kullanılmalı.
Kayıt silme:
Kayıt değiştirmek doğrudan değişikliğe geçiliyor.
ADO İLE SQL KODU ÇALIŞTIRMAK
. CurrentProject.Connection deyimini kullanarak bir SQL kodunu çalıştırmak için (Execute) deneyin.
ya da
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:
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.
İlk kaydı bul (FindFirst):
Sonrakini bul (FindNext):
Öncekini bul (FindPrevious):
Son kaydı bul (FindLast):
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.
Son olarak NEW ya da CREATEOBJECT deyimi ile oluşturduğunuz Connection ve Recordset nesnelerini NOTHING ile silmeyi unutmayın.
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ı
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 sadece okunabilir olarak açmak:
Kod:
rs.Open "Table1", CurrentProject.Connection, adOpenKeyset, adLockReadOnly
Kod:
rs.Open "Table1", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Kod:
rs.Open "SELECT * FROM Table1 WHERE ...", CurrentProject.Connection, adOpenKeyset, adLockReadOnly
Kod:
rs.Open "SELECT * FROM Table1 WHERE ...", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
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
Kod:
rs.Delete
Kod:
rs.Open ...
rs("Field1") = "Test"
rs("Field2") = 1234
rs.Update
. 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');"
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
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
Kod:
rs.MoveFirst
rs.Find “Kriter”, 0, adSearchForward
Kod:
rs.Find “Kriter”, 1, adSearchForward
Kod:
rs.Find “Kriter”, 1, adSearchBackward
Kod:
rs.MoveLast
rs.Find “Kriter”, 0, adSearchBackward
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’
Kod:
Set rs = Nothing
Set conn = Nothing
Yazının Temeli alıntıdır. Üstünde değişiklikler yapılmıştır. modalı