Skip to main content

AccessTr.neT


üst üste ikinci kaydı silerken run-time hatası

üst üste ikinci kaydı silerken run-time hatası

Çözüldü #1
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

.rar EnvanterKayıtları.rar (Dosya Boyutu: 941,19 KB | İndirme Sayısı: 9)
Son Düzenleme: 18/09/2014, 15:30, Düzenleyen: azlan.
Cevapla
Çözüldü #2
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.
Herkes, kendisinin AR-GE'cisidir...


Konulara eklenen Uygulama içeriğine yönelik Tavsiyeler
Alt Form Denetim Değerlerine ulaşma ve Alt Form Güncelleme
Kapatırken Düzenle (Compact On Close) Seçeneğinin İşaretlenmesi Hakkında
Cevapla
Çözüldü #3
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.
Son Düzenleme: 19/09/2014, 14:59, Düzenleyen: azlan.
Cevapla
Çözüldü #4
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..
HAYAT BİR SINAVSA,,,
ADIMI YAZAR ÇIKARIM..
.
Cevapla
Çözüldü #5
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.
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da