• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:フォーム上のレコード数表示がエラー(Access2007))

フォーム上のレコード数表示がエラー(Access2007)

このQ&Aのポイント
  • Access2000ベースで開発されたDB内のフォーム上のレコード数を表示するテキストボックスが、Access2007で開くと「#Name?」となって表示されません。
  • Access2007でも正常に表示させるためには、「Microsoft DAO 3.6 Object library」の参照設定を行う必要があります。
  • 解決方法をご教示いただけると幸いです。

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

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.2

手元のAccess97とAccess2003で確認したところ、現象を確認できました。 どうやら、Access2000~Access2003の間で、コントロールソースやプロパティシートでの DAOオブジェクトの参照についての仕様変更(つまり使用可→使用不可)があったようです。 (なお、No.1の方が参考に挙げているサイトの内容は、VBE上でのことではないでしょうか) 解決策としては・・・  a)VBA関数であればコントロールソースでも問題なく使用できるので、レコードソースが   テーブルやクエリなのでしたら、DCount関数で表示する  b)ユーザー関数を定義して、その関数で表示する   (関数内でRecordSetCloneを参照すれば、SQL文によるレコードソースにも対応可) といった方法があるかと思います。 【「a)」の場合】  コントロールソースに以下の式を入力:   =DCount("*","レコードソース名") 【「b)」の場合】  1)そのフォームのモジュールにユーザー関数を設定(以下の3行をCopy&Pasteで可): Private Function MyRecordCount() As Long   MyRecordCount = Me.RecordSetClone.RecordCount End Function '※標準モジュールではなくフォームへの設置にしたのは、関数を単純化するため。 '  (フォームを引数にして標準モジュールで定義した場合は別フォームでの使い回しも可能)     2)コントロールソースに以下の式を入力:   =MyRecordCount() ・・・以上です。

zep_750_rs
質問者

補足

早速のご回答有難うございました。 “a)”の手法が簡単そうだったので試したところ、正常に表示されました。 今後は勉強のために“b)”も試してみたいと思います。 詳しく教えていただき本当にありがとうございました。 本当に助かりました。 今後ともよろしくお願いいたします。

その他の回答 (1)

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.1

http://www.whitebinder.com/article/160653/microsoft-access/microsoft-access-2007-recordsetclone-doesn-t-work.aspx の最初(一番下)のレス。 要約すると -------- その書き方は、すべてのバージョンで通用しない(意訳:それは2007では受け付けない) Forms!フォーム名.RecordsetClone.RecordCount か Me.RecordsetClone.RecordCount と書け -------- って事。

zep_750_rs
質問者

補足

助言をいただき感謝いたします。 早速実行しましたが、同じエラーが発生しています。 変更前 =[RecordsetClone].[RecordCount] 変更後 =[Me].[Recordset].[RecordCount] =[Forms!フォーム名].[Recordset].[RecordCount] 何か他の方法はないでしょうか? よろしくお願いします。