Saya telah mencoba beberapa hal untuk membuat tombol yang menavigasi kembali ke catatan pertama Anda berada di catatan terakhir. Saya mendapatkan kesalahan "tidak dapat pergi ke catatan yang ditentukan". Berikut adalah dua gaya kode yang saya coba untuk tombol ini:

Private Sub Command161_Click()
    On Error Resume Next
    If Me.CurrentRecord = acLast Then
            DoCmd.GoToRecord , , acFirst
        Else
            DoCmd.GoToRecord , , acNext
       End If

End Sub

Private Sub Command161_Click()
With Me.Recordset
  If .AbsolutePosition = .RecordCount - 1 Then
      DoCmd.GoToRecord , , acFirst
  Else
    DoCmd.GoToRecord , , acNext
  End If
End With

End Sub

Tujuannya adalah untuk mengulang kembali ke catatan pertama tanpa mengizinkan pengguna untuk membuat catatan baru. Saya sudah mencoba kode ini dengan "izinkan tambahan" disetel ke ya dan sekarang, dengan hasil yang sama. Bantuan apa pun akan dihargai.

1
Kyle Quigley 12 Maret 2019, 21:34

1 menjawab

Jawaban Terbaik

Saya akan menyarankan mendefinisikan fungsi predikat pribadi dalam modul formulir Anda yang mengembalikan nilai boolean tergantung pada apakah formulir aktif menampilkan catatan terakhir di Sumber Rekamannya atau tidak.

Fungsi seperti itu dapat ditulis:

Private Function LastRecordP() As Boolean
    With Me.RecordsetClone
        If Not .EOF Then
            .MoveLast
            .MoveFirst
            LastRecordP = Me.CurrentRecord = .RecordCount
        End If
    End With
End Function

Pengendali peristiwa OnClick Anda untuk kontrol tombol Anda kemudian dapat ditulis dengan lebih ringkas sebagai:

Private Sub Command161_Click()
    If LastRecordP Then
        DoCmd.GoToRecord , , acFirst
    Else
        DoCmd.GoToRecord , , acNext
    End If
End Sub

Atau, Anda dapat mengizinkan fungsi untuk menerima objek Formulir sebagai argumen dan mengevaluasi fungsi tersebut menggunakan kata kunci Me, misalnya:

Private Function LastRecordP(Frm As Form) As Boolean
    With Frm.RecordsetClone
        If Not .EOF Then
            .MoveLast
            .MoveFirst
            LastRecordP = Frm.CurrentRecord = .RecordCount
        End If
    End With
End Function
Private Sub Command20_Click()
    If LastRecordP(Me) Then
        DoCmd.GoToRecord , , acFirst
    Else
        DoCmd.GoToRecord , , acNext
    End If
End Sub
0
Lee Mac 13 Maret 2019, 00:36