AccessTr.neT
On Error - Hata denetimi hakkında. - 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ığı: On Error - Hata denetimi hakkında. (/konu-on-error-hata-denetimi-hakkinda.html)

Sayfalar: 1 2 3


On Error - Hata denetimi hakkında. - nightashes - 17/12/2016

Merhabalar,

Form silme butona şu şekil bir silme işlemi yaptırıyorum.
Public Sub sil_taslakici()
Dim rS As New ADODB.Recordset
rS.Open "T_RECETETASLAKMALIYET", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
rS.Find "[ReceteTaslakNo]=" & Me.taslakno
rS.Delete
rS.Close: Set rS = Nothing
End Sub
Public Sub sil_taslak()
Dim rS As New ADODB.Recordset
rS.Open "T_RECETETASLAK", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
rS.Find "[ReceteTaslakNo]=" & Me.taslakno
rS.Delete
rS.Close: Set rS = Nothing
End Sub

Önce sil_taslakici silme işlemi yaptırıyorum. Daha sonra sil_taslak silme işlemini yaptırıyorum.
Fakat taslak icinde veri olmayınca hali ile silme işlemi gerçekleştirilemediğinden hata vermekte.
Bu durumda nasıl bir hata denetimi yapmalıyım. Yani sil_taslakici çalışmasa bile veri olmasa bile yani silmese bile devam edip sil_taslak işlemini gerçekleştirmesini istiyorum. Nasıl yapabilirim acaba?


Cvp: On Eror - Hata denetimi hakkında. - ozanakkaya - 17/12/2016

Merhaba,

rS.Find "[ReceteTaslakNo]=" & Me.taslakno
kodu ile kaydı bulduktan sonra


if rs.recordcount <> 0 then
rs.Delete
end if

şeklinde kod düzenlemesi yapabilirsin.


Cvp: On Eror - Hata denetimi hakkında. - nightashes - 17/12/2016

(17/12/2016, 00:58)ozanakkaya yazdı: Merhaba,

rS.Find "[ReceteTaslakNo]=" & Me.taslakno
kodu ile kaydı bulduktan sonra


if rs.recordcount <> 0 then
rs.Delete
end if

şeklinde kod düzenlemesi yapabilirsin.

Hocam olmadı. Şu şekilde düzenledim hatalı mı acaba?
Public Sub sil_taslakici()
Dim rS As New ADODB.Recordset
rS.Open "T_RECETETASLAKMALIYET", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
rS.Find "[ReceteTaslakNo]=" & Me.taslakno
If rS.RecordCount <> 0 Then
rS.Delete
End If
rS.Delete
rS.Close: Set rS = Nothing
End Sub
Public Sub sil_taslak()
Dim rS As New ADODB.Recordset
rS.Open "T_RECETETASLAK", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
rS.Find "[ReceteTaslakNo]=" & Me.taslakno
rS.Delete
rS.Close: Set rS = Nothing
End Sub
Sadece sil_taskaici ne dediğinizi uyguladım.


Cvp: On Eror - Hata denetimi hakkında. - ozanakkaya - 17/12/2016

Merhaba,

sizin uyguladığınız kodda sorun yok. Sanırım find ile veri arama ile ilgili sıkıntı var. Daha önceden verdiğim
If rS.RecordCount <> 0 Then

kodunu aşağıdaki ile değiştirerek deneyiniz.

if rs.eof=false then



Cvp: On Eror - Hata denetimi hakkında. - nightashes - 17/12/2016

Teşekkürler.

Sorun çözüldü.

-----
Tekrar kontrol ettiğimde aslında çözülmedi. Hata verme işlemi durdu evet ama bu seferde sadece bir satırı siliyor. 10 satır işlem olduğu zaman geri kalan 9 kayıt kalıyor.


Cvp: On Eror - Hata denetimi hakkında. - ozanakkaya - 17/12/2016

Merhaba,

örnek uygulama eklemediğinizde kodu deneme imkanımız olmuyor ve yazılan cevaplar malesef farazi oluyor.

Kodu aşağıdaki ile değiştirerek deneyiniz.


Public Sub sil_taslakici()
Dim rS As New ADODB.Recordset
rS.Open "T_T_RECETETASLAKMALIYET", CurrentProject.Connection, adOpenKeyset, adLockOptimistic

If rS.EOF Then
   Exit Sub
Else
   rS.MoveFirst
       Do Until rS.EOF
           If rS![ReceteTaslakNo] = Me.taslakno Then
               rS.Delete
           End If
           rS.MoveNext
       Loop
End If

rS.Close
Set rS = Nothing
end sub