- 締切済み
アクセスでサブフォームのレコードを取得したい。
教えてください!!MS accessにてサブフォームのレコードの数やレコードの内容をVBAにて取得したいと考えてます。その結果によって、条件分岐がしたいので・・・。現在は、サブフォームのフッターに=count(*)のテキストボックスを作り、この値を取得しています。もう少しスマートに(直接)取得できないのでしょうか?ちなみに(サブフォームの)コントロール名.form.countでやってみると、違う数字が出てきます。この数字はいったいなんでしょうか? お願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- sgh
- ベストアンサー率61% (75/121)
#1のsghです。 もっとシンプルな方法があったので、アップしておきます。 Private Sub コマンド1_Click() Me.RecordsetClone.MoveLast MsgBox Me.RecordsetClone.RecordCount End Sub #1の回答1と同じ考え方ですが、これだとDAOの参照も不要のようです。 コードの例は、開いているフォーム自身のレコードを参照しているので、 サブフォームを参照するように書き換えてください。
- sgh
- ベストアンサー率61% (75/121)
うろ覚えですが、最後のレコードまで移動しないと、直接カウントを取っても ご質問の通り、正しい値は帰ってこないと思います。 私なら、以下の方法を使います。 1."RecordsetClone"を使って、下記の例のように"MoveLast"をかけてから、カウントを取る。 (例) Private Sub コマンド1_Click() Dim DB As DAO.Database Dim RS As DAO.Recordset Set DB = CurrentDb Set RS = Me.RecordsetClone RS.MoveLast MsgBox RS.RecordCount End Sub 2.直接SQL文で数える (例) Private Sub コマンド1_Click() Dim DB As DAO.Database Dim RS As DAO.Recordset Dim StSQL As String Set DB = CurrentDb StSQL = "select count(*) as 件数 from テーブル1" Set RS = DB.OpenRecordset(StSQL) MsgBox RS!件数 End Sub 参考になれば幸いです。