- ベストアンサー
フォーム上のレコード数表示がエラー(Access2007)
- Access2000ベースで開発されたDB内のフォーム上のレコード数を表示するテキストボックスが、Access2007で開くと「#Name?」となって表示されません。
- Access2007でも正常に表示させるためには、「Microsoft DAO 3.6 Object library」の参照設定を行う必要があります。
- 解決方法をご教示いただけると幸いです。
- みんなの回答 (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() ・・・以上です。
その他の回答 (1)
- chie65536
- ベストアンサー率41% (2512/6032)
http://www.whitebinder.com/article/160653/microsoft-access/microsoft-access-2007-recordsetclone-doesn-t-work.aspx の最初(一番下)のレス。 要約すると -------- その書き方は、すべてのバージョンで通用しない(意訳:それは2007では受け付けない) Forms!フォーム名.RecordsetClone.RecordCount か Me.RecordsetClone.RecordCount と書け -------- って事。
補足
助言をいただき感謝いたします。 早速実行しましたが、同じエラーが発生しています。 変更前 =[RecordsetClone].[RecordCount] 変更後 =[Me].[Recordset].[RecordCount] =[Forms!フォーム名].[Recordset].[RecordCount] 何か他の方法はないでしょうか? よろしくお願いします。
補足
早速のご回答有難うございました。 “a)”の手法が簡単そうだったので試したところ、正常に表示されました。 今後は勉強のために“b)”も試してみたいと思います。 詳しく教えていただき本当にありがとうございました。 本当に助かりました。 今後ともよろしくお願いいたします。