• 締切済み

アクセスでサブフォームのレコードを取得したい。

教えてください!!MS accessにてサブフォームのレコードの数やレコードの内容をVBAにて取得したいと考えてます。その結果によって、条件分岐がしたいので・・・。現在は、サブフォームのフッターに=count(*)のテキストボックスを作り、この値を取得しています。もう少しスマートに(直接)取得できないのでしょうか?ちなみに(サブフォームの)コントロール名.form.countでやってみると、違う数字が出てきます。この数字はいったいなんでしょうか? お願いします。

みんなの回答

  • sgh
  • ベストアンサー率61% (75/121)
回答No.2

#1のsghです。 もっとシンプルな方法があったので、アップしておきます。 Private Sub コマンド1_Click() Me.RecordsetClone.MoveLast MsgBox Me.RecordsetClone.RecordCount End Sub #1の回答1と同じ考え方ですが、これだとDAOの参照も不要のようです。 コードの例は、開いているフォーム自身のレコードを参照しているので、 サブフォームを参照するように書き換えてください。

  • sgh
  • ベストアンサー率61% (75/121)
回答No.1

うろ覚えですが、最後のレコードまで移動しないと、直接カウントを取っても ご質問の通り、正しい値は帰ってこないと思います。 私なら、以下の方法を使います。 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 参考になれば幸いです。

関連するQ&A

専門家に質問してみよう