Recordset.Update
Veritabanından aldığımız değerleri, kimi zaman ziyaretçinin vereceği değerlerle veya ziyaretçinin bir takım tercihleri sonucu güncelleştirmemiz gerekir. Bu
Recordset nesnesinin
.Update metodu ile kolayca yapılır. Yalnız burada hassas bir nokta var: diyelim ki aynı anda iki veya daha fazla kullanıcı Web programımızın veritabanına ulaşır ve aynı anda değişiklik yaparlarsa ne olur?
Biraz önce
Recordset'in
.Open metodunun imleçlerinden söz ederken, okumanın yönünü veya imlecin hareket tarzını belirleyen argümanları sıralamıştık. Bu argüman dizisine bir yenisini ekleyerek, veritabanına erişimin niteliğini ve güncelleştirmenin nasıl yapılacağı ve yansıtılacağını da belirleyebiliriz. Bu işlemin temel ilkesi veritabanı kayıtlarının kilitlenmesi esasıdır. Bu kilitlemenin türünü belirleyerek, güncelleştirmenin de nasıl yapılacağını belirlemiş oluruz. Burada kullanacağımız argümanlar da ADO'nin şifreli sayıları olması gerekirken,
adovbs.inc dosyası sayesinde İngilizce (ve dolayısıyla anlaşılabilir) kelimeler olur.
advbs.inc dosyasını devreye soktuysanız, şu iki tür kiliti kullanabiliriz:
adLockReadOnly Kayıtların güncelleştirilmesini önler; ziyaretçimiz veritabanına kayıt yapmayacaksa, bu kilit türünü kullanmamız gerekir.
adLockOptimistic Veritabanına ek yapacaksak, mevcut kayıtmları düzelteceksek ve bazılarını sileceksek, bu kilit türünü kullanmamız gerekir.
Yukarıdaki kod örneğimizin sadece son satırını, bu metodu kullanmak amacıyla, şöyle yazabiliriz:
Kod:
Kayitdizisi.Open Sorgu, Veriyolu, aOpenStatic, adLockOptimistic
Tabiî bir veritabanını güncelleştirmek için imleci veritabanında doğru kaydın
üzerine götürmek ve bu arada Recordset'in bize sağladığı mevcut verilerin yerine
yeni değerleri atamış olmak gerekir. Bunu sağladıktan sonra bütün yapacağımız şey
.Update metodunu kullanmak ibarettir:
Kod:
Kayitdizisi("Adi") = "Necip Fazıl"Kayitdizisi("Soyadı") "Dayanır"Kayitdizisi.Update
Bu komut, imleç o sırada hangi kaydın üzerinde ise o kaydın "Adi" ve "Soyadi"
alanlarındaki veriyi "Necip Fazıl" ve "Dayanır" haline getirir. Bu metodu kullanırken
bir kaydın bütün alanlarını güncelleştirmemiz veya güncelleştirilmeyen alanları
eski değerleri ile tekrar etmemiz gerekmez.