• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ACCESS──メインフォームでサブフォームのレコード件数をカウントしたい)

メインフォームでサブフォームのレコード件数をカウントする方法

このQ&Aのポイント
  • 日付フィールドからなるメインフォームと品番/出庫数フィールドからなるサブフォームを作成しました。サブフォームには日付に対応する出庫明細が表示されますが、このレコード件数をメインフォームのコントロールで表示したいです。
  • サブフォームのヘッダにはテキストボックスコントロールを作成して、式「=Count([品番])」を設定することで、サブフォーム上での件数表示は可能です。しかし、同じ式をメインフォームのコントロールに設定すると、全レコードの件数が表示されてしまいます。
  • メインフォームでサブフォームのレコード件数をカウントする方法として、「=Count([埋め込み].Form![品番])」を試しましたが、結果は「#Error」となりました。Count関数やSum関数でも同様の結果となります。解決策をご教示いただけると助かります。

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

  • ベストアンサー
  • k_eba
  • ベストアンサー率39% (813/2055)
回答No.2

サブフォームのフッタに『件数』というテキストボックスを作り ソースに =Count(*) とします。 普通のフォームとして作り、[規定のビュー]をデータシートにすればデータシートのサブフォームになりますから、フッターを追加しても問題はなく メインフォームにテキストボックスを作り =NZ([サブフォーム名].[Form]![件数]) という具合にサブフォームの「件数」を参照すれば良いです。 参考になれば幸いです

k_o_j_i
質問者

お礼

これはすでに試していたのですが…… 「コードビルダ」で作成した式では([サブフォーム名].フォーム![件数]) と 「Form」が「フォーム」(実際は半角カナ)になっていました(なぜ・・・?) k_ebaさんの式で上手くいきました。ありがとうございました。

その他の回答 (1)

  • pooh_200x
  • ベストアンサー率46% (7/15)
回答No.1

AccessVBAでTblの件数を取得すると↓ 1.Mainフォームにテキストボックスを1つ作って下さい。名前は「txt1」 2.デザインフォームのプロパティのイベントで「開く時」の右にある 「...」3点リーダーをクリックし、コードビルダを選択します。 3.コードビルダが開いたら ツール→参照設定→Microsoft DAO 3.6 Object Libraryにチェックを付けて下さい。 下記の点線の部分を↓にカット&ペースト Private Sub Form_Open(Cancel As Integer) ●●●←ここにカット&ペースト End Sub '---------------------------↓ Dim db1 As Database '変数宣言 Dim rs1 As Recordset Dim aCnt As Integer '総件数の取得 aCnt = 0 Set db1 = CurrentDb Set rs1 = db1.OpenRecordset("T_全件") If rs1.EOF Then '1件も存在しない場合はエラー Msgbox("T_全件テーブルに該当データは存在しません。") Exit Sub End If rs1.MoveLast aCnt = rs1.RecordCount Me.txt1.Value = aCnt  'テーブルの合計値をTxt1に表示する。 rs1.Close db1.Close '----------------------------↑ 説明が必要であれば追記してください。(暇なときに返事します)

k_o_j_i
質問者

補足

詳細な回答いただきありがとうございました。 >Set rs1 = db1.OpenRecordset("T_全件") この"T_全件"のところにレコードソースとなるテーブル名を入れるのだと思いますが、実行したところ、テーブルのすべてのレコード数が表示されてしまいました。 サブフォームに表示されているレコード件数だけを取得したかったのですが……。 しかしこのコードを使えばレコードソース以外のテーブルからも値を取得することが出来ますね。今後の参考になりそうです。

関連するQ&A