下記のような記述でクエリーより件数を取得したいのですがうまくいきません。
rstBufの指定が悪いのだとは思い、調べてはいるのですがうまくいかない状態です。
どなたかご助言をお願い致します。
Dim rstBuf As DAO.Recordset
Dim qryBuf As DAO.QueryDef
strSQL=select xx from xx
Set qryBuf = CurrentDb.CreateQueryDef(Q_RPT, strSQL)
Set rstBuf = qryBuf.OpenRecordset(strSQL,dbOpenDynaset)
If rstBuf.EOF = False Then
rstBuf.MoveLast
count = rstBuf.RecordCount
End If
rstBuf.Close
Set rstBuf = Nothing
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
> Set rstBuf = qryBuf.OpenRecordset(dbOpenDynaset)にselect文を指定してデータ件数を取得できるのでしょうか?
指定する必要はありません。
Set qryBuf = CurrentDb.CreateQueryDef(Q_RPT, strSQL)
は、
Set qryBuf = CurrentDb.CreateQueryDef(Q_RPT)
qryBuf.SQL = strSQL
と等価です。
qryBuf に SQL文が存在する訳ですから、更に指定する必要はないですね。
OpenRecordset メソッドの対象が
Database の場合とQueryDef の場合の構文の違いをヘルプでご確認ください。
なお、MoveLast で最終レコードに移動する方法は
データの件数によっては重くなります。
●サブクエリを使用する方法
strSQL2 = "Select Count('*') FROM [" & strSQL & "]. AS T"
Set rstBuf = CurrentDb.OpenRecordset(strsql2, dbOpenDynaset)
Count = rstBuf(0)
これなら、1件もない場合に ゼロが返ります。
●定義域関数を使用する方法(既存のクエリの場合のみ)
Count = DCount("*","クエリ名")
これは、CreateQueryDef でクエリを作成した直後では失敗するかも知れません。
No.3
- 回答日時:
> Set rstBuf = qryBuf.OpenRecordset(strSQL,dbOpenDynaset)
Set rstBuf = qryBuf.OpenRecordset(dbOpenDynaset)
でしょう。
ありがとうございます。
Set rstBuf = qryBuf.OpenRecordset(dbOpenDynaset)にselect文を指定してデータ件数を取得できるのでしょうか?
No.2
- 回答日時:
Private Sub コマンド0_Click()
Dim dbsCurrent As DAO.Database
Dim rstPerform As DAO.Recordset
Set dbsCurrent = CurrentDb
Set rstPerform = dbsCurrent.OpenRecordset("SELECT * FROM A")
If Not rstPerform.BOF Then
rstPerform.MoveLast
Debug.Print rstPerform.RecordCount
End If
rstPerform.Close
dbsCurrent.Close
End Sub
Private Sub コマンド0_Click()
Dim rstPerform As DAO.Recordset
Set rstPerform = CurrentDb.OpenRecordset("SELECT * FROM A")
If Not rstPerform.BOF Then
rstPerform.MoveLast
Debug.Print rstPerform.RecordCount
End If
rstPerform.Close
End Sub
どちらでもOKです。
No.1
- 回答日時:
どこでどのようにつまづいてますか?
f8キーによるステップ実行で結果を教えてください。
> strSQL=select xx from xx
とは
strSQL="select xx from xx"
ですよね?
Husky2007さん、bin-chanさん有難うございます。
訳ありでクエリーをつくったソースの形式で件数を取得したいのです。
Set qryBuf = CurrentDb.CreateQueryDef(Q_RPT, strSQL)
でQ_RPTにstrSQLを指定し中身を取ってこれるのですが
件数だけ別に取得したいのです。
・・意味が通じなかったらすみません
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Oracle SQLにて固定長でデータ...
-
ORACLEで一番最初の結果だけを...
-
Oracleのビュー作成時に「指定...
-
DB2でREPLACEによる文字列の置換
-
抽出結果を1件ずつ次の抽出条件...
-
同行内の最大値
-
ある値以上の空き番の最小値を...
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
Accessでテーブルの値をテキス...
-
Accessでテーブル名やクエリ名...
-
「直需」の意味を教えてください
-
異なるサーバのDBデータ同士を...
-
ACCESSでの改行コード
-
作番ってどういう意味でしょうか?
-
Access テキスト型に対する指定...
-
Accessでコードを入れると名前...
-
Accessレコードの追加や変更が...
-
Accessのフィールド数が255しか...
-
データベースの1要素に複数デー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Oracleのビュー作成時に「指定...
-
ORACLEで一番最初の結果だけを...
-
ROWNUMについて
-
Oracle SQLにて固定長でデータ...
-
DB2でREPLACEによる文字列の置換
-
抽出結果を1件ずつ次の抽出条件...
-
ある値以上の空き番の最小値を...
-
sqlplusで日本語入力
-
時間の重複を加味した連続時間S...
-
P/L SQLで値が更新されない。
-
PL/SQL 複数件同じ値で更新す...
-
UPDATE文でこのような更...
-
distinct で抽出したレコード件数
-
WITH句で複数テーブルを定義す...
-
VBAのRows.Selectについて
-
ACCESS クエリーから件数取得
-
group by でselect
-
SQL文の書き方
-
効率のいい集計SQL文
-
sqlの条件文に関して
おすすめ情報