Formda aktif kayıt ve toplam kayıt sayısını yazdırmak nasıl olur ?

1 2
15/04/2009, 15:04

mehmeser

Merhabalar. REsimde de görüldüğü gibi formda zaten var olan gezinti düğmelerinin benzerini ben de yaptım. Fakat orda olan aktif kayıt no ve toplam kayıt no kısmını yardım da aldığım halde çözemedim.


Bir de Access'e ait yerde filtre uygulanmışsa süzülmüş diye belirtiyor. Böyle olursa daha iyi olacak.

Belki kullandığım kod dışında başka yöntemler de vardır ?

Alttaki gezinti düğmelerini yerini ve görüntüsünü değiştirmek için iptal edeceğim.

teşekkürler.


15/04/2009, 17:45

Seruz

Kodda atamak yerine direkt metin kutusunun kayıt kaynağına yazmayı deneyin.

Koddaki atamaları kaldırın ve

txtAktifKayit 'nın kayıt kaynağına
Kod:
=[CurrentRecord]

txtToplamKayit 'nın 'nın kayıt kaynağına
Kod:
=RecordsetClone.RecordCount

yazın. Denedim düzgün çalışıyor.

filtre uygulandığında çalışmıyor demişsiniz ama sizin formda filtreleme göremedim. Üstte Ara var, ancak o formdaki kayıt sayısını değiştirmiyor, sadece istenilen kayda gidiyor o kadar.
15/04/2009, 18:56

mehmeser

Merhaba,

Ne kadar teşekkür etsem azdır size. Hem bir sürü form olayına kod yazmaktan kurtuldum hem de profesyonelce ve bir kadar basitçe uygulanabilir. Hem de hatasız, hata olursa Access in kendi rutinleri yüzünden olacak. Ama ben biraz da daha geliştiridim tekniğinizi, Toplam kayıt kutusuna:

Kod:
=IIf([NewRecord];RecordsetClone.RecordCount+1;RecordsetClone.RecordCount)

Bu sayede yeni kayıtta da doğru görünüyor rakam. 275/274 yerine 275/275 oluyor. Buna bir de filtre uygulanırsa mesaj ekleyeceğim bir yere her şey tamma oldu.

Bahsettiğim filre kutulardan birini seçip "Seçime göre filtre uygula" gibi içerik menüsünde idi. Ama onlar da düzgün çalıştı. Prozblem çözüldü. Aslında imzamdaki birinci cümlenin kehaneti gerçeleşmiş oldu. Uzaklarda arama diyor her zaman çözüm kendini.

Sağlıcakla, sağolun.
22/04/2009, 17:46

mehmeser

Selamlar,

Sayın Access uzmanları neredeyse çıldırmak üzereyim artık bu kadarına da pes doğrusu.

İki farklı formda aynı işlemi yapıyorum birinde çalışıyor diğerinde yanlış toplam veriyor. tüm vb kodlarını silip denedim, tüm form nesnelerini silip denedim bi şey bulamadım. Nesneyi yeniden oluşturdum olmadı, çalışan formdan kopyaladım olmadı. Personel formunda çalışan

=IIf([NewRecord];RecordsetClone.RecordCount+1;RecordsetClone.RecordCount)

komutu Ogrenci formunda neden çalışmıyor ?

Hatta kayıtları sildim azalttım abuk sabuk şeyler de denedim olmadı. Nedense Ogrenci formunda ilk girişte sürekli toplam txtToplamKayit sürekli 1 görünüyor ilerleyince düzeliyor. bunun ilacı nedir yoksa Access arasıra böyle şeyler yapar mı ?



Resimde görülen sorun nasıl çözülür? Örnek ektedir.
22/04/2009, 18:26

Seruz

Enterasan bir problem.

Ogrenci tablosunu kullanan, Yeni bir form oluşturduğumda çalışıyor.
Ancak sizin formda düzgün çalışmıyor nedense.

Formda bu kodla çakışan bir şeyler olabilir ama
sorun nedir bilmiyorum açıkcası.

[bilgi]Sn. Mehmeser'in isteği üzerine ek kaldırılmıştır[/bilgi]
22/04/2009, 18:50

esrefigit

bu yol genel olarak kullanılan yol değildir

doğrusu budur kodun ilgili kısmını aynen değiştir


Kod:
Private Sub Form_Current()

Dim rst As DAO.Recordset
Set rst = Me.RecordsetClone

'son kayda gitki toplam kaydı alabilleeim
rst.MoveLast

' rst nin bu formun kayıtlarına dayandığını belirtiyoruz
rst.Bookmark = Me.Bookmark
Me.txtToplamKayit = Me.CurrentRecord & " de " & rst.RecordCount[hr]
aslında doğru navigation kodu bu şekilde olmalı

Private Sub Form_Current()
Dim rst As DAO.Recordset

On Error GoTo ERRORForm_Current
    Dim strErrMsg As String

' default olarak düğmelerin durumu
Me.ilk.Enabled = True
Me.önceki.Enabled = True
Me.sonraki.Enabled = True
Me.son.Enabled = True

Set rst = Me.RecordsetClone


rst.MoveLast

rst.Bookmark = Me.Bookmark


If rst.AbsolutePosition = 0 Then
    Me.ilk.Enabled = False
    Me.önceki.Enabled = False
End If


If Me.CurrentRecord >= Me.RecordsetClone.RecordCount Then
    Me.sonraki.Enabled = False
    Me.son.Enabled = False
End If

Me.kayitno.Caption = Me.CurrentRecord & " de " & rst.RecordCount

rst.Close
Set rst = Nothing


ERRORForm_Current_exit:
        On Error Resume Next
        Exit Sub
        
ERRORForm_Current:
        Select Case Err
        Case 3021
            Resume Next
        Case Else
            strErrMsg = strErrMsg & "Error #: " & Format$(Err.Number) & vbCrLf
            strErrMsg = strErrMsg & "Error Description: " & Err.Description
            MsgBox strErrMsg, vbInformation, "Kayda gidiyorsun"
            Resume ERRORForm_Current_exit
        End Select




End Sub

Private Sub ilk_Click()
On Error GoTo Err_ilk_Click


    Me.Recordset.MoveFirst
    
Exit_ilk_Click:
    Exit Sub

Err_ilk_Click:
    MsgBox Err.Description
    Resume Exit_ilk_Click
    
End Sub
Private Sub önceki_Click()
On Error GoTo Err_önceki_Click


     Me.Recordset.MovePrevious
    

Exit_önceki_Click:
    Exit Sub

Err_önceki_Click:
    MsgBox Err.Description
    Resume Exit_önceki_Click
    
End Sub
Private Sub sonraki_Click()
On Error GoTo Err_sonraki_Click


    Me.Recordset.MoveNext
    

Exit_sonraki_Click:
    Exit Sub

Err_sonraki_Click:
    MsgBox Err.Description
    Resume Exit_sonraki_Click
    
End Sub
Private Sub son_Click()
On Error GoTo Err_son_Click


    Me.Recordset.MoveLast
    
Exit_son_Click:
    Exit Sub

Err_son_Click:
    MsgBox Err.Description
    Resume Exit_son_Click
    
End Sub
Private Sub cmdNew_Click()
On Error GoTo Err_cmdNew_Click


    DoCmd.GoToRecord , , acNewRec
    

Exit_cmdNew_Click:
    Exit Sub

Err_cmdNew_Click:
    MsgBox Err.Description
    Resume Exit_cmdNew_Click
    
End Sub
Private Sub cmdClose_Click()
On Error GoTo Err_cmdClose_Click


    DoCmd.Close

Exit_cmdClose_Click:
    Exit Sub

Err_cmdClose_Click:
    MsgBox Err.Description
    Resume Exit_cmdClose_Click
    
End Sub

Private Sub cmdDelete_Click()


    On Error GoTo Err_cmdDelete_Click
  
If MsgBox("kayıt silinecekmi?", vbYesNo + vbDefaultButton2, "Not!") = vbNo Then
    Exit Sub
End If


    Me.Recordset.Delete

    Me.Requery
    MsgBox "Uyarı", , "Kayıt silindi"

Exit_cmdDelete_Click:
    Exit Sub

Err_cmdDelete_Click:
    Select Case Err
    Case 3021
        MsgBox "böyle bir kayıtyok"
        Resume Exit_cmdDelete_Click

    Case Else
        Dim msgStr As String
        msgStr = CStr(Err) & " " & Description
        MsgBox msgStr
        Resume Exit_cmdDelete_Click
    End Select


End Sub
1 2