Skip to main content

AccessTr.neT


İlişkisiz Tablo Ve Kayıt Kontrolü Sorunu

bonur82
bonur82
5
1444

İlişkisiz Tablo Ve Kayıt Kontrolü Sorunu

#1
Arkadaşlar sitede göremedim yardımcı olursanız sevinirim. Sanırım bir yerde mantık hatası yapıyorum.  Form üzerinde ilişkisiz ve satır kaynağı başka tablo olan iki listboxım var. Birinden diğerine butonlarla ekleme çıkarma yapıyorum. Formda yeni bir kayıt oluşturduğumda ekleme yapmam için Vba da refresh komutunu eklemem gerekiyor, aksi halde listboxlar arası öğe ekleme yapamıyorum. Çünkü ana tabloda satır henüz oluşmamış oluyor ( kaydetmeden son çıkış yaptığımda kontrol etmek istiyorum).  Buraya kadar sıkıntı olmuyor ama bu sefer de kayıt kontrolü yapamıyorum çünkü refresh komutu before update olayını tetikliyor ve before update içinde kaydetme işlemi yapmama izin vermiyor. Yani kısacası refresh yapmadan tablolar arası ekleme yapamıyorum, yapınca da formdaki kayıt kontrolünü gerçekleştiremiyorum. Bu döngüde takıldım kaldım  Icon_rolleyes


Private Sub btn_ekle_maket_click()
    Me.Refresh 'problem burada'
    Set tbl_proje_maketleri = CurrentDb
        CurrentDb.Execute "INSERT INTO [tbl_proje_maketleri](Projeler_IDFK,Maketler_IDFK)" _
        & "select '" & Me.Projeler_ID & "','" & Me.lst_tum_maketler.ItemData(-1) & "'"
    'liste öğeleri yenileme ve formun kirli olayının aktif edilmesi
        Me.lst_secilen_maketler.Requery
        Me.Projeismi.SetFocus
        Me.Dirty = True
End Sub

Private Sub Form_BeforeUpdate(Cancel As Integer)

If Me.Dirty = True Then

     soru = MsgBox("Değişiklikler Kaydedilsin mi?", vbYesNoCancel)    
           If soru = vbCancel Then
            Cancel = True
           ElseIf soru = vbYes Then
           DoCmd.RunCommand acCmdSaveRecord  'problem burada'
           MsgBox "Değişiklikler Kaydedildi"
           Else
           DoCmd.RunCommand acCmdUndo
           End if
End If
End Sub
Cevapla
#2
Merhaba,
Örnek uygulamanızı eklemezseniz yardımcı olmamız zor.
Cevapla
#3
benim ile yaklaşık aynı sıkıntıyı yaşayan bir arkadaş o da örnek eklememiş 
dirty diye arattım sadece bu soru çıktı
Cevapla
#4
(17/03/2020, 15:04)accessman yazdı: benim ile yaklaşık aynı sıkıntıyı yaşayan bir arkadaş o da örnek eklememiş 
dirty diye arattım sadece bu soru çıktı


Siz sorularınıza örnek ekliyor musunuz???
Cevapla
#5
(17/03/2020, 15:04)accessman yazdı: benim ile yaklaşık aynı sıkıntıyı yaşayan bir arkadaş o da örnek eklememiş 
ve gördüğünüz gibi o da cevabini bulamamis? Sayın @accessman örnek çalışmayı kendimiz için değil sizin için istiyoruz, eğer bunu anlamıyorsanız ve "bak bu da eklenmemiş " diyorsanız hâlâ, kaybeden biz olmayiz çok çok bir göz gezdirir geçeriz ilgimizi çekiyorsa uğraşırız o kadar.
Cevapla
#6
(15/06/2017, 14:17)bonur82 yazdı: Arkadaşlar sitede göremedim yardımcı olursanız sevinirim. Sanırım bir yerde mantık hatası yapıyorum.  Form üzerinde ilişkisiz ve satır kaynağı başka tablo olan iki listboxım var. Birinden diğerine butonlarla ekleme çıkarma yapıyorum. Formda yeni bir kayıt oluşturduğumda ekleme yapmam için Vba da refresh komutunu eklemem gerekiyor, aksi halde listboxlar arası öğe ekleme yapamıyorum. Çünkü ana tabloda satır henüz oluşmamış oluyor ( kaydetmeden son çıkış yaptığımda kontrol etmek istiyorum).  Buraya kadar sıkıntı olmuyor ama bu sefer de kayıt kontrolü yapamıyorum çünkü refresh komutu before update olayını tetikliyor ve before update içinde kaydetme işlemi yapmama izin vermiyor. Yani kısacası refresh yapmadan tablolar arası ekleme yapamıyorum, yapınca da formdaki kayıt kontrolünü gerçekleştiremiyorum. Bu döngüde takıldım kaldım  Icon_rolleyes


Private Sub btn_ekle_maket_click()
    Me.Refresh 'problem burada'
    Set tbl_proje_maketleri = CurrentDb
        CurrentDb.Execute "INSERT INTO [tbl_proje_maketleri](Projeler_IDFK,Maketler_IDFK)" _
        & "select '" & Me.Projeler_ID & "','" & Me.lst_tum_maketler.ItemData(-1) & "'"
    'liste öğeleri yenileme ve formun kirli olayının aktif edilmesi
        Me.lst_secilen_maketler.Requery
        Me.Projeismi.SetFocus
        Me.Dirty = True
End Sub

Private Sub Form_BeforeUpdate(Cancel As Integer)

If Me.Dirty = True Then

     soru = MsgBox("Değişiklikler Kaydedilsin mi?", vbYesNoCancel)    
           If soru = vbCancel Then
            Cancel = True
           ElseIf soru = vbYes Then
           DoCmd.RunCommand acCmdSaveRecord  'problem burada'
           MsgBox "Değişiklikler Kaydedildi"
           Else
           DoCmd.RunCommand acCmdUndo
           End if
End If
End Sub
Merhaba.
Alttaki kod tablo güncelliyor galiba birde bunu ekleyip deneyiniz.

currentdb.tabledefs.refresh
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Task