• ベストアンサー

フィルタ後のテーブルのレコード数を取得したい

アクセスvbaです。 フィルタ後のテーブルのレコード数を取得したいのですが Debug.Print DCount("[フィールド1]", "テーブル1") だと、フィルタ前の数が取得されてしまいます。 フォーム1にテーブル1を紐付けて、 更にフィルタをしているのですが、 元のテーブル1のレコード数が10として、 フィルタ後が3なら、3を取得するVBAコードを教えてください。

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

  • ベストアンサー
回答No.1

フォームでフィルターをかけても、テーブルのレコード数が変わるわけではないですからね。 このコードはどこに記述したのですか。フォームに記述したのなら、 Debug.Print DCount("[フィールド1]", "テーブル1", Me.Filter) と抽出条件にフォームのフィルターを設定する。 あるいは、フォームのレコードセットの件数を直接取得する。 Debug.Print Me.Recordset.RecordCount このフォーム以外のモジュールに記述する場合は、Me を Forms!フォーム名 とします。

ASBLXASF
質問者

お礼

回答ありがとうございました。

関連するQ&A

  • フィルタ後のフォームの件数の取得の仕方

    あくせすです。 テーブルを元にフォームにデータを表示させているのですが 元データのテーブルのレコード数が100件だとして 今フォーム上で手作業でフィルタをかけて表示しているレコード数が20件だとしたら、 この20件と言う数をVBAで取得する方法を教えてください。 DCountだと、元テーブルの全てのレコード数(フィルタ前)が取得されてしまいます。

  • DCountでテーブルのレコード件数を取得するには

    アクセスのテーブル1に何件レコードがあるかをvbaのDCountで取得したいのですが Sub a() MsgBox DCount("テーブル1") End Sub すると、引数は省略できません。(Error 449)になります。 フィールドは件数あり、レコードが入ってたり入ってなかったりするし、主キーはありません。 アクションクエリの削除クエリですべてのレコードを削除したりするので レコード件数が0件なのか、レコードがはいってるかをDCountで取得できればなー と思うのですが、どうすればいいでしょうか?

  • エクセルからアクセスのテーブルやクエリのレコード数を取得することは可能でしょうか?

    エクセルもアクセスも起動している状態で、エクセル側でマクロを実行してアクセスのとあるテーブルやクエリのレコード数を取得したいのですがどうしていいのかわかりません。アクセス自体での取得方法もわかりません。SQLというのを使わないと不可能なのでしょうか? VBAで可能でしたらどういったコードを書けばいいのでしょうか? よろしくお願いします。

  • テーブル内のレコードを別のテーブルに移す良い方法を教えてください

    SQLサーバー7.0(ADO)とAccess97のVBAでアプリケーションの開発を行っております。SQLサーバー7.0(サーバー側)にあるテーブルの中身(レコード全件)をAccess97(ローカル)にあるテーブル(テーブル名とその中のフィールド名は全く同じだが中身はからっぽ)にまとめて移しかえる良い方法があれば教えてください。いま私はフォームオープンイベントでフィールドとレコードをループでまわして移しかえているのですが、テーブル数も多いため記述も長くなりますし、何よりもパフォーマンスが良くありません。テーブル単位で中身を別のテーブルに移す方法などがあれば是非教えてください。 (例) SQLサーバー(ホスト側)---テーブル名「T_社員マスター」フィールド数100項目、レコード数500件 ↓ ↓ フォームオープン時にそのまま移しかえたい ↓ ↓ Access97(端末側)-------テーブル名「T_社員マスター」フィールド数100項目、レコード数0件 よろしくお願いします。

  • DCount 型が一致しません。(Error13)

    アクセスVBAです。 テーブルで 2016年から始まるレコードの数を数えようと Debug.Print DCount([フォルダ名], "フォルダ名", "[フォルダ名] = '2016年*'") としたのですが、 型が一致しません。(Error13) になります。 レコードに該当文字が含むレコード数を取得するの方法を教えてください。

  • DCount 0が返ります。

    アクセスvbaで テーブルで該当の文字を抽出後のレコードの数を取得するしたいのですが 数 = DCount("[番号]", "T全て", "[分類] = '" & str分類 & "'") 数 = DCount("*", "T全て", "[分類] = '" & str分類 & "'") どちらも0が返ります。 str分類には、分類フィールドに必ず存在する文字列が入っています。 手作業でテーブルにフィルタをすると ちゃんとレコード数が見えるのですが DCountの何が間違ってるのでしょうか?

  • ADOでテーブルのフィールド「A」の「0000」の数を数えたい。

    エクセルVBAからアクセスへ Set con = New ADOdb.Connection con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ACCESSファイル名 Set Rs = New ADOdb.Recordset Rs.Open テーブル名, con, adOpenKeyset, adLockOptimistic Debug.Print Rs.RecordCount Set Rs = Nothing Set con = Nothing とエクセルVBAにコードを記述していますが思いどおりにいきません。 Debug.Print Rs.RecordCount しかわからなく これだとレコードの数しか数えられませんでした。 テーブルのフィールド「A」には「0000」が複数あります。 これを数えるにはどうすればいいのでしょうか? もっといいやり方があれば教えてくださいませ。 よろしくお願いします。

  • 数じゃなくてレコードが存在するかどうかを取得したい

    アクセスです。 数じゃなくてレコードが存在するかどうかを取得したいのですが myStr = DSum("[日付]", "T食べ物", "[日付] = #2016/07/19#") をすると、85140が返ります。 DSumではないメソッドを使うのだと思いますが テーブルにレコードが存在するかどうかを取得するVBAコードはありますか? myStr = Nz(DSum("[日付]", "T食べ物", "[日付] = #2016/07/19 #"), "無し") でなしは取得できましたが やりたいのはこういう事じゃないです。

  • DCountはそんなに負荷がかかるのでしょうか?

    アクセス2010です。 テーブルは10000レコードあり そのレコードをVBAでループしているのですが そのループの中にDCountで数を取得するコードを入れると 凄く動きが遅くなります。 フリーズして応答なしになります。 DCountはそんなに負荷がかかるのでしょうか?

  • VBAでその月の数の一番多い値を取得したいのですが

    フィールド1 フィールド2 2016/08/07 52.6 2016/08/06 52.2 2016/08/05 52.2 2016/08/04 52.9 2016/08/03 53.6 2016/08/02 53.3 2016/08/01 53.1 と言うデータがテーブルには入っています。 アクセスのVBAでその月の数の一番多い値を取得したいのですが strMAX = DMax("[フィールド2]", "テーブル1", "[フィールド1] = '" & ??? & "'") 上記の???の部分はどうすればいいでしょうか? 日付をフィルタするのではなく 「8月の中で一番多い値」を指定するにはどうすればいいでしょうか? 結果としては、53.6を取得したいです。

専門家に質問してみよう