プロが教える店舗&オフィスのセキュリティ対策術

<環境>access2007、db:sqlserver2005
メインフォームに日付のテキストボックスがあり、その日付に一致したデータをサブフォームに表示しています。

メインフォームのOPEN時処理
Set FM = Forms![FTop]
Set FS = Forms![FTop]![FTop_sub].Form
FS.RecordSource = "select * from aaa where day = '"& fm!day &"'"

この時、RecordSourceにセットしたデータの件数を取得したいのですが、
サブフォームのフォームヘッダーにテキストボックスを配置して、
そのコントロールソースを
=Count(*)
としました。
しかし、"#エラー"と表示されてしまいます。
サブフォームは"帳票フォーム"です。
どこが悪いのか困っています。どなたかご教授お願いします。

A 回答 (3件)

DataCountではなくRecordCountでしたね。

失礼しました。

この場合、RecordsetCloneでも問題ないと思いますが、Recordsetの方が効率がいいのではないかと思います。
RecordsetCloneを使用せざるを得ないのは、フォームに表示しているレコードを移動させずにレコード操作を行うような場合だったような気がします。
    • good
    • 0
この回答へのお礼

ありがとうございます。
大変参考になりました。

お礼日時:2009/12/11 10:08

訂正です。



Form![FTop]!以下省略...
ではなく
Forms![FTop]!以下省略...
でした。

また、サブフォームのテキストボックスなら
=Forms![FTop]!以下省略...
という記述ではなく
=Recordset.なんとか
という記述が可能だと思います。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
以下の通りで親フォームから取得することができました。
また、いろいろ調べた結果RecordsetCloneでも取得できました。
どちらを使っても問題ないでしょうか?
<親フォームレコードセット後の処理>
Dim FS As Form
Set FS = Forms![FTop]![FTop_sub].Form
(1)
Me!txt_RecCnt = FS.Recordset.RecordCount
(2)
If Not (FS.RecordsetClone.EOF) = True Then
FS.RecordsetClone.MoveLast
End If
Me!txt_RecCnt = FS.RecordsetClone.RecordCount

お礼日時:2009/12/10 09:03

Form![FTop]![FTop_sub].Form.Recordset.DataCountか何かで(DataCountという名前だったかどうか定かではありません)件数が取得できると思いますので、それをコントロールソースに設定してやればできると思います。


(=Form![FTop]![FTop_sub].Form.Recordset.DataCountのような感じ)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!