
Access2003のVBAで次のような構文を用いてクエリーの該当レコード数を取得したいのですがうまく出来ません。
構文又は手法が間違っているのでしょうか。
Dim db As Database
Dim rs As Recordset
Dim cnt As Long
Set db = CurrentDb
Set rs = db.OpenRecordset("該当顧客リストクエリ", dbOpenTable)
cnt = rs.RecordCount
※OpenRecordsetの行で「実行時エラー'3219'無効な処理です」と出てしまいます。
又、”該当顧客リストクエリ”では特定の抽出条件を設定して、”顧客リストテーブル”の一部を抽出するようにしています。
No.2ベストアンサー
- 回答日時:
Set db = CurrentDb
Set rs = db.OpenRecordset("該当顧客リストクエリ", dbOpenTable)
cnt = 0
If Not rs.EOF Then
rs.MoveLast
cnt = rs.RecordCount
rs.MoveFirst
End If
このようにしたほうが、良いですよ
DAOのレコードセットは展開したときには、正確なレコード件数を返しません
一旦、MoveLastメソッドで最終ポイントまで行けば正確な件数が得られます
(ただし、パフォーマンスが落ちますorz)
面倒でも、「select count(*) as RecordCount from "テーブル名"」で取得したほうがいいですよ
ちなみに、別件はこれで良いんじゃないですかね?
Set rs = db.OpenRecordset("該当顧客リストクエリ", dbOpenSnapShot)
ご回答いただきありがとうございます。
DAOのレコードセットは確かに最後まで移動させないと総レコード数が出ない場合がありますね。
OpenRecorssetはうまくいきました。
重ねましてありがとうございます。
No.3
- 回答日時:
Access2003なら
Dim db As DAO.Database
Dim rs As DAO.Recordset
とすれば 出来ます。
No.1
- 回答日時:
dbOpenTable は ヘルプによると
テーブル タイプの Recordset オブジェクトを開きます
ということですから、クエリは開けません。
dbOpenDynaset など、他の Type を指定してください。
なお、レコード数を取得するだけならレコードセットを使わなくても
cnt = DCount("*", "該当顧客リストクエリ")
で、取得できます。
この回答への補足
ご回答いただきありがとうございます。
Dcountはうまくいきました。
OpenRecordsetの方は次のようにした所、「実行エラー'3061'パラメータが少なすぎます。1を指定して下さい」と出てしまいました。
Set rs = db.OpenRecordset("該当顧客リストクエリ", dbOpenDynaset, dbAppendOnly, dbPessimistic)
構文が違うのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Access サブフォームでの選択行の取得
その他(データベース)
-
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
VBAをつかってクエリの情報を抽出するには??
Visual Basic(VBA)
-
-
4
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
5
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
6
access テキストボックスの値取得
Access(アクセス)
-
7
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
8
ACCESSテーブルを RecordSet以外で1レコードづつ読む方法
Visual Basic(VBA)
-
9
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
10
accessでクエリをExcelにエクスポートする時にファイル名に日付を追加したい
Access(アクセス)
-
11
ACCESS DCOUNTの抽出条件について
Access(アクセス)
-
12
ACCESSのVBで、エクセルファイルの最終行を取得
Excel(エクセル)
-
13
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
14
「RunSQL」と「Execute」の違い
Access(アクセス)
-
15
Access 最後のレコードに到達するまでループ処理を行う方法
Access(アクセス)
-
16
ACCESS2003のグループ化のエラーについて
その他(データベース)
-
17
アクセス クエリのフィールド名が勝手に変わる
Access(アクセス)
-
18
Accessのフォームで、画面表示されているものを印刷する
Access(アクセス)
-
19
Accessでレコードを別テーブルへコピーするには
Access(アクセス)
-
20
Accessでフォームから別フォームのテキストボックスの値を設定する
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access2000 更新のタイミング?
-
【続続】Access2002で連番のつ...
-
accsessで顧客コードで氏名を呼...
-
Access クロス集計クエリについて
-
ACCESS で マクロの中でフィ...
-
ACCESS2003 Aアクロバットを介...
-
データベースの1要素に複数デー...
-
シングルクォーテーションとダ...
-
Access VBAでクエリーのレコー...
-
Excel 2019 のピボットテーブル...
-
「直需」の意味を教えてください
-
ACCESS検索★ある文字を複数のフ...
-
INSERT INTO ステートメントに...
-
【Access】フォームで自動計算...
-
Countと受付状態の表示に...
-
Oracle 2つのDate型の値の差を...
-
下記の事を行うSQLがわかりませ...
-
SQLServer2005のSQL文での別名...
-
カウントが出来ません
-
ACCESSで400以上のフィールドが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
accsessで顧客コードで氏名を呼...
-
【続続】Access2002で連番のつ...
-
Access クロス集計クエリについて
-
Access2000 更新のタイミング?
-
Access フォームのデータがテー...
-
Access IF文でテーブルに存在し...
-
ADOでレコードを閉じるタイミン...
-
Access VBAでクエリーのレコー...
-
顧客IDを入力すると顧客名や住...
-
シングルクォーテーションとダ...
-
ワードでの単純作業の効率化に...
-
ACCESS で マクロの中でフィ...
-
Access 縦(行)のデータを横(列)...
-
データベースの1要素に複数デー...
-
ワードで保存するファイル名の...
-
Access2000 単票フォーム上の...
-
結合
-
Access 既に開いているフォー...
-
Accessでの顧客管理DB作成方法...
-
SQL エクセルシート別の項目...
おすすめ情報