ADO İLE BAŞLANGIÇ
ADO ile bir tabloyu kullanmak için aktif proje dosyasının Connection nesnesine bir başvuru yapılıyor.
Visual Basic
- 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:
Visual Basic
- rs.Open "Table1", CurrentProject.Connection, adOpenKeyset, adLockReadOnly
Bir tabloyu kayıt ekleme, silme ya da değiştirme için açmak:
Visual Basic
- rs.Open "Table1", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Sadece okunabilir bir SQL kodu açmak:
Visual Basic
- 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:
Visual Basic
- 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ı.
Visual Basic
- rs.Open "Table1", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
- rs.AddNew
- rs("Field1") = "Test"
- rs("Field2") = 1234
- rs.Update
Kayıt silme:
Visual Basic
- rs.Delete
Kayıt değiştirmek doğrudan değişikliğe geçiliyor.
Visual Basic
- 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.
Visual Basic
- Dim conn As ADODB.Connection
- Set conn = CurrentProject.Connection
- conn.Execute "UPDATE Table1 SET ad = 'deneme' WHERE (ID='1');"
ya da
Visual Basic
- 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:
Visual Basic
- 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.
Visual Basic
- 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):
Visual Basic
- rs.MoveFirst
- rs.Find “Kriter”, 0, adSearchForward
Sonrakini bul (FindNext):
Visual Basic
- rs.Find “Kriter”, 1, adSearchForward
Öncekini bul (FindPrevious):
Visual Basic
- rs.Find “Kriter”, 1, adSearchBackward
Son kaydı bul (FindLast):
Visual Basic
- 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.
Visual Basic
- ‘VeriAlani1 = NULL’
- ‘VeriAlani1 <> NULL’
Son olarak NEW ya da CREATEOBJECT deyimi ile oluşturduğunuz Connection ve Recordset nesnelerini NOTHING ile silmeyi unutmayın.
Visual Basic
- 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ı