AccessTr.neT

Tam Versiyon: Tüm Kayıtları Kontrol Edip Düzeltme
Şu anda arşiv modunu görüntülemektesiniz. Tam versiyonu görüntülemek için buraya tıklayınız.
Sayfalar: 1 2 3
listemde kayıtlıbulunan kayıtları  tek tek kontrol edilmesini istiyorum. daha önce ilk kayıt sırasında yapılan formülü uyarlamaya çalıştım ancak her defasında farklı bir hata alıyorum..

tüm kayıtları kontrol ederek tliste  tablosundaki "notlar" bölümündeki yazı değişecek şekilde düzenlemek istiyorum.  daha önceden kayıt yaparken bu olayı yardımlarınız ile yapmıştım. bu formülü butona uygulamak isteyince farklı hatalar alıyorum bu konuda yardımcı olabilir misiniz?
Merhaba,

Forma "btn_tumukontrol" adında buton ekledim, tıklandığında olayında

Private Sub btn_tumukontrol_Click()
On Error GoTo hata
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT * FROM Tliste")


If Not (rs.EOF And rs.BOF) Then
    rs.MoveFirst
    Do Until rs.EOF = True

        rs.Edit
        
        If IsNull(rs!brmarsvdvryil) Then
            GeciciDeviryil = 0
        Else
            GeciciDeviryil = rs!brmarsvdvryil
        End If
        
        If IsNull(rs!brmarsvsklmsure) Or rs!brmarsvsklmsure = "SÜRESİZ" Then
        
        Gecicibrmarsvsklmsure = "0"
        
        Else
        Gecicibrmarsvsklmsure = rs!brmarsvsklmsure
        
        End If
        
        Exit Sub
        
        If Gecicibrmarsvsklmsure = "SÜRESİZ" Then
            GeciciMetin35 = "0"
        Else
            GeciciMetin35 = Abs(GeciciDeviryil) + Abs(Gecicibrmarsvsklmsure)
        End If

        If Gecicibrmarsvsklmsure = "SÜRESİZ" Then
            GeciciMetin37 = "0"
        Else
        GeciciMetin37 = Abs(GeciciDeviryil) + Abs(rs!krmarsvsklmsure)
        End If
   
        rs!notlar = IIf(Abs(GeciciDeviryil) > 0 And Gecicibrmarsvsklmsure = "SÜRESİZ", "İmha Edilemez", IIf(Format(Now(), "yyyy") >= Abs(GeciciDeviryil) And Format(Now(), "yyyy") <= Val(GeciciMetin35), "Birim Arşivinde Saklanacak", IIf(Format(Now(), "yyyy") >= Val(GeciciMetin35) And Format(Now(), "yyyy") <= Val(GeciciMetin37), "Kurum Arşivinde Saklanacak", IIf(Gecicibrmarsvsklmsure = "SÜRESİZ" And rs!krmarsvsklmsure = "SÜRESİZ", "İmha Edilemez", "İmha Edilecek"))))
 
        rs.Update

        rs.MoveNext
    Loop
End If



rs.Close
Set rs = Nothing

MsgBox ("işlem tamamlandı")

hata:
MsgBox (rs!listeno & " numaralı kayıtta boş olmaması gereken veri var kontrol ediniz.")


End Sub

Kodu yazılı,

Formdaki Metin35 ve Metin37 için geçici tanımlama yaptım, 

Ancak, 
brmarsvsklmsure, brmarsvdvryil alanlarının dolu olması gerektiği, bazı kayıtlarda boş olduğundan dolayı üstteki kodda bu alanlar boş ise 0 olarak sayması için kod eklendi.

Buton tıklandıktan sonra, Karışık 5-10 kaydı inceleyin, kodun doğru çalışıp çalışmadığını test edin.
sayın ozankaya; 

forrmülü uyguladım. ancak ilk 10 kayıta kesinleşme tarihini girdim. ancak 'notlar ' bölümünü özellikle yazdırmadım ki kod çalışıyor mu diye ancak herhangi bir işlem yapmadı. kodu eklerken mi bir hata yaptım.  kontrol ettiğimde farklılık görünmüyor.
bu konuda yardımcı olabilir misiniz?
Butonun tıklandığında olayındaki kodu aşağıdaki ile değiştirerek deneyiniz.

On Error GoTo hata
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT * FROM Tliste")


If Not (rs.EOF And rs.BOF) Then
    rs.MoveFirst
    Do Until rs.EOF = True

        rs.Edit
        
        If IsNull(rs!brmarsvdvryil) Then
            GeciciDeviryil = 0
        Else
            GeciciDeviryil = rs!brmarsvdvryil
        End If
        
        If IsNull(rs!brmarsvsklmsure) Or rs!brmarsvsklmsure = "SÜRESİZ" Then
        
        Gecicibrmarsvsklmsure = "0"
        
        Else
        Gecicibrmarsvsklmsure = rs!brmarsvsklmsure
        
        End If
        
   
        
        If Gecicibrmarsvsklmsure = "SÜRESİZ" Then
            GeciciMetin35 = "0"
        Else
            GeciciMetin35 = Abs(GeciciDeviryil) + Abs(Gecicibrmarsvsklmsure)
        End If


        If rs!krmarsvsklmsure = "SÜRESİZ" Then
            Gecicikrmarsvsklmsure = "0"
        Else
            Gecicikrmarsvsklmsure = rs!krmarsvsklmsure
        End If


        If Gecicibrmarsvsklmsure = "SÜRESİZ" Then
            GeciciMetin37 = "0"
                Else
        GeciciMetin37 = Abs(GeciciDeviryil) + Abs(Gecicikrmarsvsklmsure)
        End If
   

   
        rs!notlar = IIf(Abs(GeciciDeviryil) > 0 And rs!brmarsvsklmsure = "SÜRESİZ", "İmha Edilemez", IIf(Format(Now(), "yyyy") >= Abs(GeciciDeviryil) And Format(Now(), "yyyy") <= Val(GeciciMetin35), "Birim Arşivinde Saklanacak", IIf(Format(Now(), "yyyy") >= Val(GeciciMetin35) And Format(Now(), "yyyy") <= Val(GeciciMetin37), "Kurum Arşivinde Saklanacak", IIf(Gecicibrmarsvsklmsure = "SÜRESİZ" And Gecicikrmarsvsklmsure = "SÜRESİZ", "İmha Edilemez", "İmha Edilecek"))))
 
        rs.Update

        rs.MoveNext
    Loop
End If



rs.Close
Set rs = Nothing

MsgBox ("işlem tamamlandı")

hata:
MsgBox (rs!listeno & " numaralı kayıtta boş olmaması gereken veri var kontrol ediniz.")

Dim rsa As Object
  Set rsa = Me.Recordset.Clone
  rsa.FindFirst "[listeno] = " & str(Nz(rs!listeno, 0))
  If Not rsa.EOF Then Me.Bookmark = rsa.Bookmark
(07/02/2017, 22:28)ozanakkaya yazdı: [ -> ]Butonun tıklandığında olayındaki kodu aşağıdaki ile değiştirerek deneyiniz.

On Error GoTo hata
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT * FROM Tliste")


If Not (rs.EOF And rs.BOF) Then
    rs.MoveFirst
    Do Until rs.EOF = True

        rs.Edit
        
        If IsNull(rs!brmarsvdvryil) Then
            GeciciDeviryil = 0
        Else
            GeciciDeviryil = rs!brmarsvdvryil
        End If
        
        If IsNull(rs!brmarsvsklmsure) Or rs!brmarsvsklmsure = "SÜRESİZ" Then
        
        Gecicibrmarsvsklmsure = "0"
        
        Else
        Gecicibrmarsvsklmsure = rs!brmarsvsklmsure
        
        End If
        
   
        
        If Gecicibrmarsvsklmsure = "SÜRESİZ" Then
            GeciciMetin35 = "0"
        Else
            GeciciMetin35 = Abs(GeciciDeviryil) + Abs(Gecicibrmarsvsklmsure)
        End If


        If rs!krmarsvsklmsure = "SÜRESİZ" Then
            Gecicikrmarsvsklmsure = "0"
        Else
            Gecicikrmarsvsklmsure = rs!krmarsvsklmsure
        End If


        If Gecicibrmarsvsklmsure = "SÜRESİZ" Then
            GeciciMetin37 = "0"
                Else
        GeciciMetin37 = Abs(GeciciDeviryil) + Abs(Gecicikrmarsvsklmsure)
        End If
   

   
        rs!notlar = IIf(Abs(GeciciDeviryil) > 0 And rs!brmarsvsklmsure = "SÜRESİZ", "İmha Edilemez", IIf(Format(Now(), "yyyy") >= Abs(GeciciDeviryil) And Format(Now(), "yyyy") <= Val(GeciciMetin35), "Birim Arşivinde Saklanacak", IIf(Format(Now(), "yyyy") >= Val(GeciciMetin35) And Format(Now(), "yyyy") <= Val(GeciciMetin37), "Kurum Arşivinde Saklanacak", IIf(Gecicibrmarsvsklmsure = "SÜRESİZ" And Gecicikrmarsvsklmsure = "SÜRESİZ", "İmha Edilemez", "İmha Edilecek"))))
 
        rs.Update

        rs.MoveNext
    Loop
End If



rs.Close
Set rs = Nothing

MsgBox ("işlem tamamlandı")

hata:
MsgBox (rs!listeno & " numaralı kayıtta boş olmaması gereken veri var kontrol ediniz.")

Dim rsa As Object
  Set rsa = Me.Recordset.Clone
  rsa.FindFirst "[listeno] = " & str(Nz(rs!listeno, 0))
  If Not rsa.EOF Then Me.Bookmark = rsa.Bookmark
sayın ozanakkaya, kayıtları azalttım. tabloda elle tarihleri değiştirdim ki notlar bölümündeki yazı değişiyor mu diye, değiştirmedi. aynı şekilde önceki kayıt kalıyor. benim için önemli olan yer burası çünkü burda yazan yazıya göre raporlama yapıyorum. işlem tamamlandı. diye uyarı veriyor. sonrasında da msgbox kısmında hata verdi.
Sayfalar: 1 2 3