On Error - Hata denetimi hakkında.

1 2 3
17/12/2016, 00:50

nightashes

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?
17/12/2016, 00:58

ozanakkaya

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.
17/12/2016, 01:03

nightashes

(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.
17/12/2016, 01:09

ozanakkaya

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
17/12/2016, 01:20

nightashes

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.
17/12/2016, 02:24

ozanakkaya

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
1 2 3