• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:アクセスのフォームで10件づつ表示する。)

アクセスの表示方法についての質問

このQ&Aのポイント
  • アクセスのフォームで10件づつ表示する方法
  • 帳票形式でデータが一部表示されない問題への対処法
  • 「前へ」と「次へ」ボタンを利用して10件づつの表示を実現する方法

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

  • ベストアンサー
回答No.2

前回のコードはちょっと間違い。 下記でどうかな。 Const n = 10 '「次へ」 Private Sub コマンド13_Click() Dim p As Long On Error Resume Next DoCmd.GoToRecord , , acNext, n * 2 If Err = 2105 Then p = Me.CurrentRecord DoCmd.GoToRecord , , acLast DoCmd.GoToRecord , , acGoto, p + n Else DoCmd.GoToRecord , , acPrevious, n End If End Sub '「前へ」 Private Sub コマンド16_Click() DoCmd.GoToRecord , , acPrevious, n * 2 If Err = 2105 Then p = Me.CurrentRecord DoCmd.GoToRecord , , acFirst DoCmd.GoToRecord , , acGoto, p - n Else DoCmd.GoToRecord , , acNext, n End If End Sub

t_cusl2
質問者

お礼

早速のご回答ありがとうございます。実施してみて何かありましたら改めてご質問させて頂きます。

t_cusl2
質問者

補足

ご回答有難うございます。 DoCmd.GoToRecord , , acPrevious, n * 2 If Err = 2105 Then p = Me.CurrentRecord DoCmd.GoToRecord , , acFirst DoCmd.GoToRecord , , acGoto, p - n Else DoCmd.GoToRecord , , acNext, n End If End Sub の方で実行時エラー2105が発生しました。何がいけないのでしょうか?

その他の回答 (3)

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.4

質問者さん 私に騙されてみる気はありますか。 以下の方法は、私がいろいろやってみて、何か動きそう・・・ というレベルのもので、Microsoft の資料等裏付けが取れていないものになります。 確認用フォームは、添付図の様になります。 (フォームウィザードから表形式として作ったものになります) 「an」「日付」「Src」を連結した帳票で、 ボタン、前に「btnPrev」、次に「btnNext」がヘッダに配置されたものになります。 VBAで、以下を記述します。 Const CSCRLNUM As Long = 10 Private Sub Form_Load()   Me.InsideHeight = Me.Section(acHeader).Height _           + Me.Section(acDetail).Height * CSCRLNUM _           + Me.Section(acFooter).Height End Sub Private Sub ScrollByMyself(iNum As Long)   Dim i As Long, j As Long   If (Me.Dirty Or Me.NewRecord) Then Exit Sub   j = Abs(iNum)   With Me.RecordsetClone     .MoveLast     .Bookmark = Me.Bookmark     i = .AbsolutePosition + iNum     If (i < 0) Then       i = 0     ElseIf (i >= .RecordCount) Then       i = ((.RecordCount - 1) \ j) * j     ElseIf ((i Mod j) <> 0) Then       i = (i \ j) * j     End If     .AbsolutePosition = i     Me.an.SetFocus  ' ★詳細にあるコントロール「an」にフォーカス移動     Me.Bookmark = .Bookmark     i = (Me.CurrentSectionTop - Me.Section(acHeader).Height) _       + Me.Section(acDetail).Height     i = i \ Me.Section(acDetail).Height     If (i > 0) Then       DoCmd.GoToPage 1, , Me.Section(acDetail).Height * i     End If   End With End Sub Private Sub btnPrev_Click() ' 前へ   Call ScrollByMyself(-CSCRLNUM) End Sub Private Sub btnNext_Click() ' 次へ   Call ScrollByMyself(CSCRLNUM) End Sub ※ ★ の、詳細にあるコントロールにフォーカスを移動しないと、まともに動きません。 上記では「an」にしましたが、「日付」でも「Src」でも・・・・ フォーカスが詳細にあることが重要です。 上記の細かい説明は、ここではしません。 ※ 本質問とは別の用途ですが、ブログに記事として載せてます。 アドレスは書けない、導くキーワードの提示も規約で禁止されているので書けません。 興味あったら探してみてください。 なお、上記を確認してみる・・・・使ってみようかな・・・・ すべて自己責任にてお願いします。

回答No.3

たびたび、済みません。「前へ」のコードに不足がありましたので、訂正します。 Const n As long = 5 Private Sub コマンド13_Click() Dim p As Long On Error Resume Next DoCmd.GoToRecord , , acNext, n * 2 If Err = 2105 Then p = Me.CurrentRecord DoCmd.GoToRecord , , acLast DoCmd.GoToRecord , , acGoTo, p + n Else DoCmd.GoToRecord , , acPrevious, n End If End Sub Private Sub コマンド16_Click() Dim p As Long On Error Resume Next DoCmd.GoToRecord , , acPrevious, n * 2 If Err = 2105 Then p = Me.CurrentRecord DoCmd.GoToRecord , , acFirst DoCmd.GoToRecord , , acGoTo, p - n Else DoCmd.GoToRecord , , acNext, n End If End Sub

回答No.1

コードを見る限りは問題点は見当たらないですが、「一部のデータが表示されない」とは具体的にどのようになるのか詳細に説明してもらえますか。 蛇足ですが、かなり遠回りしているコードですね。 下記のようにシンプルに記述することもできます。 '「次へ」 Private Sub コマンド13_Click() On Error Resume Next DoCmd.GoToRecord , , acNext, 10 If Err = 2105 Then DoCmd.GoToRecord , , acLast End Sub '「前へ」 Private Sub コマンド16_Click() On Error Resume Next DoCmd.GoToRecord , , acPrevious, 10 If Err = 2105 Then DoCmd.GoToRecord , , acFirst End Sub

t_cusl2
質問者

補足

「一部のデータが表示されない」について再度見てみると最後の部分が表示されません。 例えば38件データが有った場合10件の表示を3回行い、8件を最後に表示すれば良いのですが 最後は一番最後のレコードのみ表示されます。 以上、宜しくお願い致します。 また、教えて頂いたソースで試してみます。 ありがとうございました。

関連するQ&A