A.S.C Filtre, Grafik ve Raporlama Eklentisi

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: 11)
Tecrübe bütün öğretmenlerin en iyisidir.
Publilus Syrus

YARDIMCI ARAÇ UYGULAMALARIM
Takvim Günü ve İş Günü Hesaplama (YENİ!)
Access Penceresini  Tek Tıklamayla Gizleme Uygulaması (UYGULAMA)

BLOG SİTEM
A dan Z'ye Access Konuları (Güncel Bilgiler)



  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
access-sql-2 [FORM] Liste kutusu çift tıklama faklı formda kayıt bulma... rafetgulmez 7 6.887 06-04-2021, 13:42
Son Mesaj: kamil_55
  [FORM] Formda Kayıt Girdikçe önceki Kayıtların Bazıları Ilgili Alanda Görünmüyor MRRES 11 286 21-03-2021, 19:31
Son Mesaj: dsezgin
  [FORM] Puantaj Kayıt Formlarında Kayıt Hataları M_Kemal_Askeri 11 419 26-02-2021, 15:27
Son Mesaj: M_Kemal_Askeri
  Sürekli Form Kayıt Yineleme Hatası ekremer1969 6 199 24-02-2021, 19:29
Son Mesaj: ekremer1969
  [VBA] Sürekli Form çift Tıkla Açma benuva 2 129 03-02-2021, 13:14
Son Mesaj: benuva
  [VBA] Sürekli Form Label Göster/gizle benuva 2 135 27-01-2021, 15:40
Son Mesaj: benuva
  [FORM] Sürekli Form üzerinden Veri Tabanında Kayıt Arama uguruygar 5 380 28-12-2020, 13:09
Son Mesaj: uguruygar
  Bir Alt Sürekli Formda Bulunduğun Satıra Koşulsuz Renklendirme sarsak 9 547 15-09-2020, 12:01
Son Mesaj: jon206

Foruma Git:


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