Skip to main content

AccessTr.neT


Write conflict hatasi (yazma çakışması hatası)

Write conflict hatasi (yazma çakışması hatası)

Çözüldü #2
Responsible combo'sunun after update'i şu şekildeydi.
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

* 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ı.
Kod:
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
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.
Kod:
Me.Kayıtlı.Value = True
    Me.Lsst_Update_Date.Value = Now()
    Me.Text54.Value = Username()

ve yine tabloya kaydetmiyorsunuz, kayıt güncelleme pozisyonunda kalıyor.
Kod:
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
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.

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

Diğer comboların kodlarını değiştirmek size kalıyor.
Bildiğini bilenin arkasından git, bildiğini bilmeyeni uyar, bilmediğini bilene öğret, bilmediğini bilmeyenden kaç.
Konfüçyüs
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da

Bu Konudaki Yorumlar
Cvp: Write conflict hatasi (yazma çakışması hatası) - Yazar: Seruz - 27/01/2010, 23:02
Task