RecordsetClone.RecordCount
サブフォームのレコード数を表示するために使用しています。
問題は、フォームが読み込まれたときにサブフォームの境界内に収まるものだけをカウントしていることです。表示するために下にスクロールする必要があるサブフォーム内のレコードはカウントされません。
これは の正常な動作RecordsetClone.RecordCount
ですか? サブフォーム内のすべてのレコードを、下の境界線の下にあるものも含めてカウントする別の方法はありますか?
どうでも。を実行する前に、正確なRecordCount
を使用する必要があることがわかりました。同じ問題を抱えている人への以下のコンテキストとコード:MoveLast
RecordCount
コンテキスト:
すべての検索フィルター (テキスト ボックス) と [検索] コマンド ボタンを保持するメイン フォームを使用する検索ツールを設計しました。検索結果は、検索フィルターの下のサブフォームに表示されます。検索で返された結果の数をtxtResultsNumRecordCount
というメイン フォームのテキスト ボックスに渡すために使用したいと考えていました。
これを達成するために次のコードを使用していました。
Dim ResultNum As String
ResultNum = Trim(Me.MySubForm.Form.RecordsetClone.RecordCount)
Me.txtResultNum.ControlSource = "=""("" & " & ResultNum & " &"")"""
残念ながら、(少なくとも私にとっては) これは、ユーザーが下にスクロールする前にサブフォームに表示できるレコードの数にしかカウントされないため、すべてのレコードのカウントが不正確でした。
MoveLast
を行う前に正確なカウントを取得するにはRecordCount
:
Dim ResultNum As String
Dim rs As Recordset
Set rs = Me.MySubForm.Form.Recordset
rs.MoveLast
ResultNum = rs.RecordCount
Me.txtResultNum.ControlSource = "=""("" & " & ResultNum & " &"")"""
rs.MoveFirst
Set rs = Nothing
MoveFirst
最後にも使用したことに注意してください。これは、'MoveLast` が自動的にサブフォームの最後のレコードにフォーカスを移動するためです。これは私が望んでいたものではありません (ユーザーが最初のレコードを見て、下に移動することをお勧めします)。