üstadlara bir sorum olacak,
kendi bölümüm için tasarlamış olduğum ufak bir database'de write conflict (yazma çakışması) hatası almaktayım. bu konuda yardımcı olabilirseniz çok sevinirim. şimdiden herkese teşekkürler..
sorun şöyleki, ekli dosyada bulunan mdb dosyasında bir main form ve buna bağlı sürekli bir sub form mevcut. bu sürekli sub formda bir comboyu secip ( Sub Comment, Responsible comboları) değiştirmek istediğimde sürekli formdaki diğer kayıtlara ait combo değerleri de secmiş olduğum değer ile değiştirilsin. seçimi yapıp değiştiriyor ama aynı ekranda başka bir satıra geçtiğimde bir hata ve hemen ardından Write conflict uyarısı almaktayım. save record dedikten sonra kayıt işlemini yapabiliyorum. bu durumu nasıl aşarım.. yardımlarınızı bekliyorum..
Write conflict hatasi (yazma çakışması hatası)
Responsible combo'sunun after update'i şu şekildeydi.
* Msgbox'tan Yes cevabını aldıktan sonra "DoCmd.SetWarnings False" ile uyarıları kapatıyorsunuz
ancak then bloğunun sonunda true ile tekrar açmanız gerekiyordu, atlamış ve tekrar false yaptırmışsınız.
* DoCmd.RunMacro "MCR_Resp_Update"
komutu ile "QRY_Responsible_Update" adlı güncelleme sorgusunu çalıştırıp arkasından formu requery ile güncelliyorsunuz.
Ama burada atladığınız şu, siz henüz üzerinde olduğunuz mevcut kaydı kaydetmediniz.
Combo ile bir alanda değişiklik yaptığınız için mevcut kayıt güncelleme pozisyonunda kaldı.
Bu makroyu çalıştırmadan önce bu komut ile değişikliği tabloya kaydetmelisiniz.
* Devamında mevcut kayıtta kod ile yine değişiklik yapıyorsunuz.
ve yine tabloya kaydetmiyorsunuz, kayıt güncelleme pozisyonunda kalıyor.
yine aynı komut ile yapılan değişikliği tabloya kaydetmelisiniz.
* Me.Combo58.Requery
comboyu güncellemişsiniz ancak bunu niye yaptığınızı anlamadım.
combonun verilerinde değişiklik yoksa, güncellemeye de gerek yok.
Bu şekilde mevcut kaydı 2 defa üst üste kaydetmiş oldunuz tabloya.
Eğer işlemlerin yerlerini değiştirirseniz bir defa kaydederek çözebilirsiniz.
Yani önce update ile ilgili yaptığınız değişiklikleri atayıp, kaydedin.
Sonra güncelleme sorgusunu çalıştırın.
Diğer comboların kodlarını değiştirmek size kalıyor.
Kod:
If MsgBox("Do you want to change record ?", vbYesNo + vbQuestion + vbDefaultButton1, " W A R N I N G") = vbYes Then
DoCmd.SetWarnings False
DoCmd.RunMacro "MCR_Resp_Update"
Me.Kayıtlı.Value = True
Me.Lsst_Update_Date.Value = Now()
Me.Text54.Value = Username()
Me.Combo58.Requery
DoCmd.SetWarnings False
Else
SendKeys "{ESC}"
End If
ancak then bloğunun sonunda true ile tekrar açmanız gerekiyordu, atlamış ve tekrar false yaptırmışsınız.
* DoCmd.RunMacro "MCR_Resp_Update"
komutu ile "QRY_Responsible_Update" adlı güncelleme sorgusunu çalıştırıp arkasından formu requery ile güncelliyorsunuz.
Ama burada atladığınız şu, siz henüz üzerinde olduğunuz mevcut kaydı kaydetmediniz.
Combo ile bir alanda değişiklik yaptığınız için mevcut kayıt güncelleme pozisyonunda kaldı.
Kod:
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
* Devamında mevcut kayıtta kod ile yine değişiklik yapıyorsunuz.
Kod:
Me.Kayıtlı.Value = True
Me.Lsst_Update_Date.Value = Now()
Me.Text54.Value = Username()
Kod:
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
* Me.Combo58.Requery
comboyu güncellemişsiniz ancak bunu niye yaptığınızı anlamadım.
combonun verilerinde değişiklik yoksa, güncellemeye de gerek yok.
Bu şekilde mevcut kaydı 2 defa üst üste kaydetmiş oldunuz tabloya.
Eğer işlemlerin yerlerini değiştirirseniz bir defa kaydederek çözebilirsiniz.
Yani önce update ile ilgili yaptığınız değişiklikleri atayıp, kaydedin.
Sonra güncelleme sorgusunu çalıştırın.
Kod:
If MsgBox("Do you want to change record ?", vbYesNo + vbQuestion + vbDefaultButton1, " W A R N I N G") = vbYes Then
Me.Kayıtlı.Value = True
Me.Lsst_Update_Date.Value = Now()
Me.Text54.Value = Username()
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
DoCmd.SetWarnings False
DoCmd.RunMacro "MCR_Resp_Update"
DoCmd.SetWarnings True
Else
SendKeys "{ESC}"
End If
Bildiğini bilenin arkasından git, bildiğini bilmeyeni uyar, bilmediğini bilene öğret, bilmediğini bilmeyenden kaç.
Konfüçyüs
Konfüçyüs
Sayın dereza
Nerdeyse 10 ay önce üye olmuşsunuz ama ilk mesajınızı şimdi yazmışsınız. Özel bir sebebi yoksa, sorabilir miyim neden diye?
Sorunuza gelince; genelde güncelleme sorgularından sonra bu çakışma oluşuyor. Benim önerim formu kapatıp işlemi bir paravan arkasında gerçekleştirip sonra tekrar formu açtırmanız. Böylece form üzerinde kullanılmakta olan bir değerin değiştirilmesi daha sorunsuz olacaktır.
Kolay gelsin.
Nerdeyse 10 ay önce üye olmuşsunuz ama ilk mesajınızı şimdi yazmışsınız. Özel bir sebebi yoksa, sorabilir miyim neden diye?
Sorunuza gelince; genelde güncelleme sorgularından sonra bu çakışma oluşuyor. Benim önerim formu kapatıp işlemi bir paravan arkasında gerçekleştirip sonra tekrar formu açtırmanız. Böylece form üzerinde kullanılmakta olan bir değerin değiştirilmesi daha sorunsuz olacaktır.
Kolay gelsin.
İnadına, ille de Accesstr.net...
Sayın Seruz ayrıntılı bir çalışma sunmuş zaten.. Benim önerimi artık dikkate almanıza gerek yok. Fakat bu arada birşey daha dikkatimi çekti. Listeye eklenmesi için sorulan soruya "Hayır" derseniz ısrarla yeniden soruyor )
İnadına, ille de Accesstr.net...
Sayın Seruz verdiğiniz detaylar için çok teşekkür ederim,
yazmış olduğunuz bilgileri okuyup kafamda aşama aşama tasarlayınca nerelerde hata yaptığımı daha iyi anlamış oldum , dediğiniz gibi setwarnings.false olayını true olarak değiştirmeyi unutmuşum, siz yazınca farkettim onuda, tekrardan destekleriniz için çok çok teşekkür ederim. sayın mehmet demiral'in sorusuna da cevap vermek istiyorum, ozel bir sebebi yok tabiki, doğrudur uzun zaman once uye oldum ama sürekli ziyaret ederim siteyi takıldığım konularda daha onceden yazılmış cevaplara bakarak sorunlarımı bir şekilde gideriyordum, yazmış olduğum sorunu yabancı sitelerde de aradım ama genelde Sql hatası tazında cevaplar verilmiş. sonucta çözümü bulamayınca bu konuda deneyimli kişilere sormak istedim.ve konuyu açtım. sağolsun sayın Seruz hemen cevap yazmış. konularda cevap vermek istediğim sorularda olmuştur ama benden hızla cevap veren arkadaşlar olduğunu görünce verilmiş cevabın üstüne tekrar birşeyler yazmak istemediğimden aktif görünmemiş olabilirim.
Listeye eklenmesi için sorulan soruya "Hayır" ısrarla soruyor kısmını da
cancel=true
me.undo
komutu ile düzelttim. bu ayrıntı içinde teşekkür ederim. tekrar görüşmek dileğiyle, herkese iyi çalışmalar.
yazmış olduğunuz bilgileri okuyup kafamda aşama aşama tasarlayınca nerelerde hata yaptığımı daha iyi anlamış oldum , dediğiniz gibi setwarnings.false olayını true olarak değiştirmeyi unutmuşum, siz yazınca farkettim onuda, tekrardan destekleriniz için çok çok teşekkür ederim. sayın mehmet demiral'in sorusuna da cevap vermek istiyorum, ozel bir sebebi yok tabiki, doğrudur uzun zaman once uye oldum ama sürekli ziyaret ederim siteyi takıldığım konularda daha onceden yazılmış cevaplara bakarak sorunlarımı bir şekilde gideriyordum, yazmış olduğum sorunu yabancı sitelerde de aradım ama genelde Sql hatası tazında cevaplar verilmiş. sonucta çözümü bulamayınca bu konuda deneyimli kişilere sormak istedim.ve konuyu açtım. sağolsun sayın Seruz hemen cevap yazmış. konularda cevap vermek istediğim sorularda olmuştur ama benden hızla cevap veren arkadaşlar olduğunu görünce verilmiş cevabın üstüne tekrar birşeyler yazmak istemediğimden aktif görünmemiş olabilirim.
Listeye eklenmesi için sorulan soruya "Hayır" ısrarla soruyor kısmını da
cancel=true
me.undo
komutu ile düzelttim. bu ayrıntı içinde teşekkür ederim. tekrar görüşmek dileğiyle, herkese iyi çalışmalar.
O zaman aramıza -geç de olsa- hoşgeldiniz. İyi çalışmalar..
İnadına, ille de Accesstr.net...
Konuyu Okuyanlar: 1 Ziyaretçi