Sürekli Formda Kayıt Iptali
#1
Herkese merhaba;
Access de çoklu kayıt işlemi için sürekli form kullanıyorum. Formu kullanırken yeni kayıt olayında bir belge no ve kalem no ile sürekli formda girilen verileri kayıt altına alıyorum. Formda kullanıcının geçmişe dönük kayıtlarda düzeltme yapabilmesi için belge no yazıldığında tabloda kayıtlı olan belge no altındaki tüm kayıtları sürekli forma filtreleyerek getirmiş oluyorum. Kullanıcı filtrelenerek gelen bu veriler üzerinde geçmişe dönük kayıt düzenlemesi yapabiliyor. Ancak kullanıcı sürekli form üzerinde birden fazla kayıtta düzenleme yapıp sonradan bu kayıtları iptal etmek istediğinde iptal butonumdaki kod işe yaramıyor. İşe yaramama sebebi ise veri girişi yaptığı textboxlar tabloya direkt olarak kayıt gönderdiği için kaydın satır kaynağından çıkıldığı anda artık dirty kodu işe yaramaz hale geliyor. Benim istediğim ise sürekli formda tüm satır kaynaklarında yapılmış olan değişiklikleri iptal butonu ile iptal edebilmek. Bu konuda nasıl bir yol izlemeliyim. örnek verebilir misiniz?


Visual Basic
  1. Private Sub btnIptal_Click()
  2. If Me.Dirty Then
  3.      If MsgBox("Bilgilerde değişiklik yapılmış." & vbCrLf & vbCrLf & "Düzenlemeyi iptal etmek ister misiniz?", vbExclamation + vbYesNo, "Dikkat") = vbYes Then
  4.          Me.Undo
  5.          DoCmd.Close
  6.        
  7.      End If
  8. Else
  9.  
  10.    DoCmd.Close
  11.  
  12. End If
  13. End Sub





  Alıntı
Bu mesajı beğenenler:
#2
Sn Mr.Midnight
Formda bazı kayıtlarda yaptığınız değişiklikleri iptal etmek için bazı eylem sorguları hazırlamak gerekir. Tek kayıt olduğunda sorun yok, tek komutla yapılabilir, fakat birden çok kayıtta yapılan değişiklikleri iptal etmek için dediğim gibi eylem sorguları hazırlamak gerekir. Ben burada ilgili kodları paylaşacağım, siz de bu kodları kendi uygulamanızda kullanabilirsiniz.
Öncelikle formumuzu yüklediğimizde orjinal tablomuzun kopyasını oluşturuyoruz ki bu tablodaki verileri daha sonradan kullanabilelim diye.
bu tablomuzun adı ise Tablo1Gecici, daha sonra formumuzun güncelleştirme sonrasında olayına değişen kayıtların ID numaralarını TabloID adındaki tabloya kayıt yaptırıyoruz.
daha sonra diyelim ki değişiklikleri iptal edeceğiz. Değişiklikleri İptal Et butonuna bastığımızda ise değişen kayıtların orjinal verilerini Tablo1Gecici tablosundan orjinal tablomuz olan Tablo1 tablosunda güncelleştiriyoruz, yani eski halini kaydediyoruz. Birde geçici tablolarımızı form kapandığında içeriğini silelim ki bir daha ki formu açtığımızda karışıklık olmasın.

Tablo1: Formun Kayıt Kaynağı Olan Tablomuz
Tablo1Gecici: Tablo1 tablosunun değişiklikten önceki kopyası olan tablomuz
TabloID: Değişen kayıtların ID numaralarını barındıran tablomuz.
Şimdi gelelim kodlara,

Formun Load Olayına
Visual Basic
  1. Dim strSQL As String
  2. strSQL = "SELECT Tablo1.* INTO Tablo1Gecici FROM Tablo1"
  3. DoCmd.SetWarnings False
  4. DoCmd.RunSQL (strSQL)
  5. DoCmd.SetWarnings True



Formun Güncelleştirme Sonrası Olayına

Visual Basic
  1. Dim strSQL As String
  2. strSQL = "INSERT INTO TabloID ( kriterID ) VALUES (" & Me.ID & ");"
  3. DoCmd.SetWarnings False
  4. DoCmd.RunSQL (strSQL)
  5. DoCmd.SetWarnings True



"Değişiklikleri İptal Et" Komut Düğmesinin Click Olayına
Visual Basic
  1. Dim strSQL As String
  2. strSQL = "UPDATE TabloID, Tablo1Gecici INNER JOIN Tablo1 " & _
  3. " ON Tablo1Gecici.ID = Tablo1.ID SET Tablo1.ad = [Tablo1Gecici]![ad], " & _
  4. " Tablo1.soyad = [Tablo1Gecici]![soyad], Tablo1.tel = [Tablo1Gecici]![tel], " & _
  5. " Tablo1.durum = [Tablo1Gecici]![durum] WHERE (((Tablo1.ID)=[TabloID]![kriterID]));"
  6. DoCmd.SetWarnings False
  7. DoCmd.RunSQL (strSQL)
  8. DoCmd.SetWarnings True
  9. Me.Form.Refresh



Ve son olarak Formun kapandığında Olayına
Visual Basic
  1. Dim strSQL, strSQL1 As String
  2. strSQL = "DELETE Tablo1Gecici.* FROM Tablo1Gecici;"
  3. strSQL1 = "DELETE TabloID.* FROM TabloID;"
  4. DoCmd.SetWarnings False
  5. DoCmd.RunSQL (strSQL)
  6. DoCmd.RunSQL (strSQL1)
  7. DoCmd.SetWarnings True



yazarak tamamlıyoruz.


Eklenti Dosyaları
.rar   Değişiklikleri Geri Al_o_can.rar (Boyut: 65,47 KB / İndirilme: 63)



  Alıntı
Bu mesajı beğenenler: Mr.Midnight
#3
Emeğinize sağlık Onur hocam. vermiş olduğunuz bilgiler için çok teşekkür ederim...



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  [FORM] Altformda Kayıt Tıklayınca Sürekli Ilk Kayda Gidiyor. M_Kemal_Askeri 6 130 11-04-2026, 02:28
Son Mesaj: M_Kemal_Askeri
  [FORM] Sürekli Form Filtrelemede Boş Kayıtların Getirmeme kral8596 4 337 03-02-2025, 12:41
Son Mesaj: halily
  Sürekli Formda Alt Toplam Alma ates2014 2 358 10-07-2024, 09:33
Son Mesaj: ates2014
  [FORM] Formda Kriterlere Göre Sorgulanan Kayıt Miktarının Form üzerinde Gösterilmesi M_Kemal_Askeri 1 376 13-05-2024, 05:10
Son Mesaj: dsezgin
  [VBA] Sürekli Formda Combobox Güncelleme Sorunu benuva 6 758 20-11-2023, 11:56
Son Mesaj: benuva
  Sürekli Formda Kayda Uygun Resim Ekleme yahyamacit 2 440 18-11-2023, 10:56
Son Mesaj: yahyamacit
  Sürekli Formda Yeni Kayıt üstte Olsun hegu 4 565 05-10-2023, 20:55
Son Mesaj: hegu
  [VBA] Kayıt Iptali: Kayıt Iptal Tablosuna Ekle, Kayıdı Sil Işlemi programmer67 6 841 21-07-2023, 10:40
Son Mesaj: onur_can

Foruma Git:


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