ADO ile Başlangıç
#1
[Resim: spbanner7.png]


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
  1. Dim rs As New ADODB.Recordset
  2. 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
  1. rs.Open "Table1", CurrentProject.Connection, adOpenKeyset, adLockReadOnly


Bir tabloyu kayıt ekleme, silme ya da değiştirme için açmak:

Visual Basic
  1. rs.Open "Table1", CurrentProject.Connection, adOpenKeyset, adLockOptimistic



Sadece okunabilir bir SQL kodu açmak:

Visual Basic
  1. 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
  1. 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
  1. rs.Open "Table1", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
  2. rs.AddNew
  3. rs("Field1") = "Test"
  4. rs("Field2") = 1234
  5. rs.Update



Kayıt silme:

Visual Basic
  1. rs.Delete



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

Visual Basic
  1. rs.Open ...
  2. rs("Field1") = "Test"
  3. rs("Field2") = 1234
  4. rs.Update



ADO İLE SQL KODU ÇALIŞTIRMAK

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

Visual Basic
  1. Dim conn As ADODB.Connection
  2. Set conn = CurrentProject.Connection
  3. conn.Execute "UPDATE Table1 SET ad = 'deneme' WHERE (ID='1');"



ya da

Visual Basic
  1. 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
  1. 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
  1. Dim rs as New ADODB.Recordset
  2.  
  3. rs.Open "Kisiler", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
  4.  
  5. If rs.EOF = True Then
  6. MsgBox "Tabloda kayıt yok."
  7. Else
  8.  
  9. rs.MoveFirst
  10. rs.Find Kriter, 0
  11.  
  12. If rs.EOF = True Then
  13. MsgBox "Kayıt bulunamadı."
  14. Else
  15. 'Tüm kayıtları sırayla bul ve mesaj göster.
  16. Do While Not rs.EOF
  17. MsgBox "Kayıt bulundu." & vbCr & vbCr & rs("ID") & " " & rs("Ad") & " " & rs("Soyad")
  18. 'Sonraki kayıttan itibaren tekrar ara.
  19. rs.Find Kriter, 1
  20. Loop
  21. End If
  22. End If
  23. rs.Close
  24. Set rs = Nothing


İlk kaydı bul (FindFirst):

Visual Basic
  1. rs.MoveFirst
  2. rs.Find “Kriter”, 0, adSearchForward



Sonrakini bul (FindNext):

Visual Basic
  1. rs.Find “Kriter”, 1, adSearchForward



Öncekini bul (FindPrevious):

Visual Basic
  1. rs.Find “Kriter”, 1, adSearchBackward



Son kaydı bul (FindLast):

Visual Basic
  1. rs.MoveLast
  2. 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
  1. ‘VeriAlani1 = NULL
  2. ‘VeriAlani1 <> NULL



Son olarak NEW ya da CREATEOBJECT deyimi ile oluşturduğunuz Connection ve Recordset nesnelerini NOTHING ile silmeyi unutmayın.

Visual Basic
  1. Set rs = Nothing
  2. 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ı



  Alıntı
Bu mesajı beğenenler:
#2
Sayın Modalı Paylaşımlarınızı ilgi ile takip ediyoruz ...
ve de devamını da bekliyoruz ...
teşekkürler hocam...



  Alıntı
Bu mesajı beğenenler:
#3
Sayın modalı bu değerli paylaşımlarınız çok teşekkür ederiz.. Purple



  Alıntı
Bu mesajı beğenenler:
#4
Çok güzel bir anlatım, insanın hemen uygulayası geliyor Wink

Teşekkürler sayın modalı..
Javascript
  1. this.setState({sign:"Here comes the sun...."})







  Alıntı
Bu mesajı beğenenler:
#5
Sayın Modalı;

Günaydın, iyi hafta sonları...

Bu güzel paylaşım ve katkılarınız için, en içten teşekkürler..



  Alıntı
Bu mesajı beğenenler:
#6
Sayın Modalı;
Çok teşekkür ederim kafama takılan bir çok sorunun karşılığını bu makalelerinizde buldum.



  Alıntı
Bu mesajı beğenenler:


Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi