• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:GoToRecord で次のレコードを表示したい)

GoToRecordで次のレコードを表示したい

このQ&Aのポイント
  • Access2007環境でフォームに連結のコントロールと「次へ」ボタンを配置しています。ボタンを押下すると次のレコードが表示されます。
  • ボタンウィザードを使用すると、レコード件数が3件ある場合、1/3、2/3、3/3まで移動します。
  • 3/3の状態で次へボタンを押下しても新規のレコードへ移動せず、「次のレコードが存在しません」とメッセージが表示されます。

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.3

こんな感じでも良いのでは? Acc2002でも2010でも動くので2007でも大丈夫かな? Private Sub 前レコード_Click()   If Me.CurrentRecord = 1 Then     MsgBox "先頭です"   Else     DoCmd.GoToRecord acDataForm, "フォーム名", acPrevious   End If End Sub Private Sub 次レコード_Click() If Me.CurrentRecord = Me.RecordsetClone.RecordCount Then MsgBox "最後です" Else DoCmd.GoToRecord acDataForm, "フォーム名", acNext End If End Sub piroin654 さんのBookMark プロパティは覚えておくと フォームのリクエリなどでレコードが先頭に行ってしまう場合などに 超ベンリです。調べてみてください。

noname#208236
質問者

お礼

簡潔でわかりやすいです。 私のコーディングがはずかしいです。 ありがとうございました。

その他の回答 (2)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

No1です。最初の説明が変だったので、 説明を訂正します。 フォームのRecordsetCloneのBookMarkと フォームのBookMarkを使ってレコードセットが EOFあるいはBOFに達したか検知して達したならば それ以上は進まない、という方法をとります。 フォームのレコードの移動は、 フォームのRecordsetCloneのBookMarkと同期 させることにより、フォーム上で移動を 可視化しています。

noname#208236
質問者

お礼

フォームのRecordsetCloneのBookMarkというのがあるんですね。 しっかり勉強させていただきます。 ありがとうございました。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

この場合はレコードセットのBookMarkと フォームのRecordsetCloneのBookMarkを 使ってレコードセットがEOFあるいはBOFに 達したか検知して達したならばそれ以上は 進まない、という方法をとります。 DAOを使っているので、コード表のツール、参照設定から DAOにチェックをいれてください。 Micrososft DAO 3.6 Object Library のようなものです。チェックをいれたら ↑ボタンで上げられるところまで上げて ください。 最初の、 Dim bk As Variant は、表示のようにフォームモジュールの 最初に設定してください。 ついでに前に戻るのも設定しています。 Option Compare Database Option Explicit Dim bk As Variant Private Sub BTN_次へ_Click() Dim rs As Object Set rs = Me.RecordsetClone If rs.RecordCount > 0 Then rs.Move 1, bk If Not rs.EOF Then bk = rs.Bookmark Me.Bookmark = bk Else MsgBox "これより先にレコードはありません" End If Else MsgBox "レコードがありません" End If rs.Close: Set rs = Nothing End Sub Private Sub BTN_前へ_Click() Dim rs As Object Set rs = Me.RecordsetClone If rs.RecordCount > 0 Then rs.Move -1, bk If Not rs.BOF Then bk = rs.Bookmark Me.Bookmark = bk Else rs.Move 1 MsgBox "これより前にレコードはありません" bk = rs.Bookmark End If Else MsgBox "レコードがありません" End If rs.Close: Set rs = Nothing End Sub

関連するQ&A