AccessTr.neT

Tam Versiyon: üst üste ikinci kaydı silerken run-time hatası
Şu anda arşiv modunu görüntülemektesiniz. Tam versiyonu görüntülemek için buraya tıklayınız.
Selamlar,
Üst üste 2. kaydı silerken
run-time error 3021 no current record hatası veriyor. Kod şöyle;
Kod:
Private Sub Komut98_Click()
Dim blnLast As Boolean

    'MsgBox call must return the value in order to be checked.
    'If user says no then cancelling is not required.  It is only required
    '  that the deletion command is not invoked.
    If MsgBox(Prompt:="Bu kaydı silmek istediğinizden eminmisiniz?" _
            , Buttons:=vbYesNo Or vbQuestion _
            , Title:="Deleting Record") = vbNo Then Exit Sub
    'At this point it's clear we need to delete the record.
    'Using With Me is a more efficient approach to object usage.
    With Me
        'Remember for later if record is last.
        blnLast = (.CurrentRecord = .Recordset.RecordCount)
        
        Call .Recordset.Delete
        
        'Only step back if deleted record was the last.
        If blnLast Then Call DoCmd.GoToRecord(Record:=acPrevious)
    End With
    
End Sub
sayın azlan,

Öncelikle,uygulamanızı incelenmesi adına 2007 uyumlu olarak da eklemek ister misiniz,teşekkürler.

run-time error 3021 no current record hatasının kısa bir açıklama ile anlamı ise;
eğer uygulamanızdaki tablonuzda son kaydı silmişseniz veya bir başka ifade ile hiç kayıt mevcut değilse,alacağınız bir hata uyarısıdır.bir kontrol işlemi uygulamak gerekebilir.bilgilerinize.

iyi çalışmalar,
saygılar.
Sayın Atoz112,
Benim Access te 2000 uyumlu, 2002-2003 uyumlu seçenekleri var sadece, bunların ikisinden birini seçtiğim zaman ise;
Kullandığınız bazı fonksiyonlardan dolayı daha düşük versiyon formatında kayıt edemezsiniz diyor.
(19/09/2014, 14:12)atoz112 yazdı: [ -> ]sayın azlan,

Öncelikle,uygulamanızı incelenmesi adına 2007 uyumlu olarak da eklemek ister misiniz,teşekkürler.

run-time error 3021 no current record hatasının kısa bir açıklama ile anlamı ise;
eğer uygulamanızdaki tablonuzda son kaydı silmişseniz veya bir başka ifade ile hiç kayıt mevcut değilse,alacağınız bir hata uyarısıdır.bir kontrol işlemi uygulamak gerekebilir.bilgilerinize.

iyi çalışmalar,
saygılar.

Sayın Atoz112,
Son kayıt olsa haklısınız, örneğin en sondaki yani 12. kaydı siliyorum, hemen ardından 11. kaydı silmek istediğimde bu hatayı veriyor. Sanırım silme işleminden sonra bir önceki kayıta gittikten sonra ( internette okuduğum kadarıyla record pointer ) record pointer 11. kaydı göstermiyor, daha doğrusu herhalde hiçbir kaydı göstermiyor..
Sanırım;
Kod:
If blnLast Then Call DoCmd.GoToRecord(Record:=acPrevious)
bu satırdaki olay neden oluyor ama nasıl çözeceğim konusunda bir fikrim yok.
Sn. Atoz112, yardımcı olabilirseniz kodu yeniden düzenleyerek belkide
Kod:
Private Sub Komut94_Click()
Dim lngPK As Long 'change data type if yours is different

'set variable to current record ID
lngPK = Me.AssetID

Me.Requery
Me.Refresh
'return form to original record
With Me.RecordsetClone
  .FindFirst "AssetID = " & lngPK
  'if your key field is text use this line instead
  '.FindFirst "EmpID = " & Chr(34) & lngPK & Chr(34)
  If .NoMatch Then 'just in case another user deleted it in the interim
    MsgBox "Record not found!", vbCritical
  Else 'go to that record
    Me.Bookmark = .Bookmark
  End If
End With

End Sub

kodunu kullanarak yapılabilir.
ilk yazdığınız mesajda ki kodu aşağıdaki ile değiştirip dener misiniz.?

Private Sub Komut98_Click()
Dim blnLast As Boolean

'MsgBox call must return the value in order to be checked.
'If user says no then cancelling is not required. It is only required
' that the deletion command is not invoked.
If MsgBox(Prompt:="Bu kaydı silmek istediğinizden eminmisiniz?" _
, Buttons:=vbYesNo Or vbQuestion _
, Title:="Deleting Record") = vbNo Then Exit Sub
'At this point it's clear we need to delete the record.
'Using With Me is a more efficient approach to object usage.
With Me
'Remember for later if record is last.
blnLast = (.CurrentRecord = .Recordset.RecordCount)

ON ERROR RESUME NEXT
Call .Recordset.Delete

'Only step back if deleted record was the last.
If blnLast Then Call DoCmd.GoToRecord(Record:=acPrevious)
End With

End Sub

saygılarımla..
Sayın Akdemir1,
Çok teşekkürler, şu anda hata vermiyor ama 2. kayıt silindikten sonra 2. silinen kayıt var gibi görünüyor, ama ondan bir önceki kayda gidince silindiği ortaya çıkıyor ama Me.Refresh ekleyince o da çözüldü, tekrar çok teşekkürler.