AccessTr.neT
3 aydan önceki tarihleri silmek - Baskı Önizleme

+- AccessTr.neT (https://accesstr.net)
+-- Forum: Microsoft Access (https://accesstr.net/forum-microsoft-access.html)
+--- Forum: Access Cevaplanmış Soruları (https://accesstr.net/forum-access-cevaplanmis-sorulari.html)
+--- Konu Başlığı: 3 aydan önceki tarihleri silmek (/konu-3-aydan-onceki-tarihleri-silmek.html)

Sayfalar: 1 2


3 aydan önceki tarihleri silmek - kaleci - 25/01/2014

Merhaba arkadaşlar,

Aşağidaki kod, 3 aydan önceki verileri ay, ay siliyor.

Kod:
Private Sub cmdLöschen_2_Click()
'üc aydan eski tarihleri siler
Select Case MsgBox("Wollen Sie die Datensätze, die länge als 6 Monate sind, wirklich löschen?", _
              vbYesNo Or vbQuestion Or vbDefaultButton1, "Datensatz löschen")
       Case vbYes
            MsgBox "Löschen..."
CurrentDb.Execute "DELETE DateDiff('m',[Datum1],Date()) AS Ifade1, * FROM tblKfzPersDE IN '' [ms access;pwd=test;database=D:\KfzPersonenDB.accdb] WHERE (((DateDiff('m',[Datum1],Date()))>=3));"
       Case vbYes
            MsgBox "nicht Löschen..."
End Select
'Formular aktualisieren
Me.Requery
Me.untFrmKfz.Requery
End Sub

Bunu gün olarak ayarlama imkanımız varmıdır.
Yani 24.01.2014 de kodu çaliştırdıgım zaman 01.11.2013 den önceki verileri siliyor.

Benim istediğim
Kodu 24.01.2014 de çaliştırırsam 24.10.2013 tarihinden önceki verileri silsin.
Kodu 25.01.2014 de çaliştırırsam 25.10.2013 tarihinden önceki verileri silsin.
Kodu 26.01.2014 de çaliştırırsam 26.10.2013 tarihinden önceki verileri silsin.

Ben üç aydan eski verileri kaydetmek istemediğim gibi, üç aylık verilerinde kayıtlı olmasını istiyorum. Şu anda kodu çalıştırdığımda 2 ay 1,2,3….29,30. Günlük veriler kayıtta kalıyor.

Yardımcı olursanız menmun olurum

Saygılarımla
kaleci


Cvp: 3 aydan önceki tarihleri silmek - alpeki99 - 25/01/2014

Bugünün tarihinden 90 gün çıkartın. Elde ettiğiniz tarihi Where için şart olarak kullanın. Where tarih > 90 gün önceki tarih


Cvp: 3 aydan önceki tarihleri silmek - alpeki99 - 25/01/2014

3 ay önceki tarihi şu şekilde bulabilirsiniz :

DateAdd("m", -3, Date)

24.01.2014 isek 24.10.2013 ü tarih olarak elde edersiniz. Elde edilen tarihi Where için şart göstereceksiniz.


Cvp: 3 aydan önceki tarihleri silmek - kaleci - 25/01/2014

alpeki99 hocam,

hizli bir sekilde cevap verdigin icin tesekkür ederim, ama dedigini yapinca kod calismiyor. Galiba söylediginizi yanlis veya eksik uyguluyorum.

Saygilarimla
kaleci


Cvp: 3 aydan önceki tarihleri silmek - alpeki99 - 25/01/2014

Ekte yer alan örnek proje işinizi görecektir. Mümkün mertebe yorum satırı eklemeye çalıştım:


Sub TarihleriEtiketteGoster()

lblBugun.Caption = Date
lblUcAyOncekiTarih.Caption = DateAdd("m", -3, Date)

End Sub

Private Sub btnKayitSil_Click()
Dim ucAyOncekiTarih As Date
Dim ucAyOncekiTarihSon As String

' Formu kullanırken gece yarısını geçebileceği için kullanıcıyı yanıltmayalım tarihi tekrar formda gösterelim
TarihleriEtiketteGoster

' 3 ay önceki tarihi bulalım
ucAyOncekiTarih = DateAdd("m", -3, Date)

' Türkçe tarih ile ingilizce tarih uyumu için işlem yapalım
ucAyOncekiTarihSon = Format(ucAyOncekiTarih, "dd""/""mm""/""yyyy")

DoCmd.SetWarnings False

' Üç aydan eski kayıtları silecek olan Sql cümlemiz
DoCmd.RunSQL "DELETE FROM tblMusteriler WHERE (Tarih < #" & ucAyOncekiTarihSon & "#)"

' Silinen kayıtlar olduğu için liste kutusunuda güncelleyelim
lstKayitListesi.Requery

DoCmd.SetWarnings True

End Sub

Private Sub btnTestKayitlariniEkle_Click()

DoCmd.SetWarnings False

' Formu kullanırken gece yarısını geçebileceği için kullanıcıyı yanıltmayalım tarihi tekrar formda gösterelim
TarihleriEtiketteGoster

' Tablodaki eski kayıtları silelim
DoCmd.RunSQL "DELETE FROM tblMusteriler"

' Test için tabloya yedi kayıt ekleyelim
DoCmd.RunSQL "INSERT INTO tblMusteriler (AdSoyad,Tarih) VALUES ('AccessTr.Net','" & DateAdd("m", -3, Date) & "')"
DoCmd.RunSQL "INSERT INTO tblMusteriler (AdSoyad,Tarih) VALUES ('AccessTr.Net 1','" & DateAdd("m", -1, Date) & "')"
DoCmd.RunSQL "INSERT INTO tblMusteriler (AdSoyad,Tarih) VALUES ('AccessTr.Net SİL 1','" & DateAdd("m", -5, Date) & "')"
DoCmd.RunSQL "INSERT INTO tblMusteriler (AdSoyad,Tarih) VALUES ('AccessTr.Net 102','" & DateAdd("m", -2, Date) & "')"
DoCmd.RunSQL "INSERT INTO tblMusteriler (AdSoyad,Tarih) VALUES ('AccessTr.Net Test','" & DateAdd("m", -1, Date) & "')"
DoCmd.RunSQL "INSERT INTO tblMusteriler (AdSoyad,Tarih) VALUES ('AccessTr.Net SİL 2','" & DateAdd("m", -6, Date) & "')"
DoCmd.RunSQL "INSERT INTO tblMusteriler (AdSoyad,Tarih) VALUES ('AccessTr.Net alpeki99','" & DateAdd("m", 1, Date) & "')"

DoCmd.SetWarnings True

' Tabloya eklenen verileri liste kutusunda gösterelim
lstKayitListesi.Requery

' Kullancıyı bilgilendirelim
MsgBox "Test için veritabanına 7 kayıt eklenmiştir." & vbCrLf & vbCrLf & "Şimdi ikinci butona basarak 3 aydan eski tarihli kayıtları silebilirsiniz.", vbInformation, "AccessTr.Net - alpeki99"

End Sub

Private Sub Form_Load()

' Bugünün tarihi ve üç ay öncenin tarihini form üzerinde gösterelim ki farkı görebilsin.
TarihleriEtiketteGoster

End Sub



Cvp: 3 aydan önceki tarihleri silmek - kaleci - 25/01/2014

Alpeki hocam,

ellerine sağlik, çok güzel de bir örnek vermişsin.

saygılarımla
kaleci