アプリ版:「スタンプのみでお礼する」機能のリリースについて

SQL文でaccessのフィールドのレコード数を数えています。

Range("A1").CopyFromRecordset rsで無事、Range("A1")にレコード数を入力が出来ているのですが

セルに入力ではなく、出来れば変数にしたいのですが、データベース初心者なので、力をいただけないでしょうか

1度セルに入力後、変数に格納も出来ますが、出来れば変数に代入のみをしたいです

Range("A1").CopyFromRecordset rsの部分を
count_suu = rs のようにで代入できません


http://club-vba.tokyo/vba-sql-count/
こちらのサイトを参考にさせていただいています。


Sub レコード数をカウントする()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim count_suu as variant

'Connectionオブジェクトを作成
Set cn = New ADODB.Connection
'Recordsetオブジェクトを作成
Set rs = New ADODB.Recordset

'データベースを開く
cn.Open _
"Provider=Microsoft.ACE.OLEDB.16.0;" & _
"Data Source=" & ThisWorkbook.Path & "\テスト.accdb;"

Dim vSQL As String

vSQL = "SELECT COUNT(商品名) FROM 商品マスタ;"
'SQLを実行
cn.Execute vSQL

'「商品マスタ」テーブルのデータを取得してセルに転記
rs.Open vSQL, cn
'ここは成功
Range("A1").CopyFromRecordset rs

’エラー
count_suu = rs

rs.Close
cn.Close
End Sub

accessもexcelも2016です。

質問者からの補足コメント

  • マクロはexcelから実行しています。

      補足日時:2022/03/30 19:22

A 回答 (2件)

vSQL = "SELECT COUNT(商品名) FROM 商品マスタ;"


rs.Open vSQL, cn
count_suu = rs.Fields(0).Value
です。
    • good
    • 1
この回答へのお礼

無事出来ました!有難う御座います。

お礼日時:2022/03/31 21:27

cn.Execute vSQL


いらないと思います。
count_suu =rs!count(商品名)
とかで行けるんじゃないかな?
    • good
    • 0
この回答へのお礼

cn.Execute vSQLはなくても、大丈夫なんですね!
有難う御座います!

お礼日時:2022/03/31 21:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A