Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1205 / 2272 ツリー ←次へ | 前へ→

【8259】DAOで集合関数の値を取得したい かめ 06/7/14(金) 16:53 質問[未読]
【8261】Re:DAOで集合関数の値を取得したい Gin_II 06/7/14(金) 16:55 回答[未読]
【8264】Re:DAOで集合関数の値を取得したい かめ 06/7/14(金) 17:30 質問[未読]
【8265】Re:DAOで集合関数の値を取得したい レモン 06/7/14(金) 17:49 回答[未読]
【8267】Re:DAOで集合関数の値を取得したい かめ 06/7/15(土) 1:33 質問[未読]
【8268】Re:DAOで集合関数の値を取得したい Gin_II 06/7/15(土) 2:43 回答[未読]
【8270】Re:DAOで集合関数の値を取得したい かめ 06/7/15(土) 10:43 質問[未読]
【8271】Re:DAOで集合関数の値を取得したい よろずや 06/7/15(土) 11:26 回答[未読]
【8272】Re:DAOで集合関数の値を取得したい かめ 06/7/16(日) 8:22 お礼[未読]

【8259】DAOで集合関数の値を取得したい
質問  かめ  - 06/7/14(金) 16:53 -

引用なし
パスワード
   VBAのDAOで集合SQLの値を取得する書き方を教えてください。
よろしくお願いします。

【8261】Re:DAOで集合関数の値を取得したい
回答  Gin_II  - 06/7/14(金) 16:55 -

引用なし
パスワード
   >VBAのDAOで集合SQLの値を取得する書き方を教えてください。

集合SQLの値とは?
OpenRecordset ではないということでしょうか?

【8264】Re:DAOで集合関数の値を取得したい
質問  かめ  - 06/7/14(金) 17:30 -

引用なし
パスワード
   ▼Gin_II さん:
>>VBAのDAOで集合SQLの値を取得する書き方を教えてください。
>
>集合SQLの値とは?
>OpenRecordset ではないということでしょうか?

VBAで"select count(*) from t"の値を変数に格納したいのですが。
書き方がよくわかりません。
OpenRecordsetだと思うのですが。

超初心者なのでよろしくお願いします。

【8265】Re:DAOで集合関数の値を取得したい
回答  レモン  - 06/7/14(金) 17:49 -

引用なし
パスワード
   ▼かめ さん:
>▼Gin_II さん:
>>>VBAのDAOで集合SQLの値を取得する書き方を教えてください。
>>
>>集合SQLの値とは?
>>OpenRecordset ではないということでしょうか?
>
>VBAで"select count(*) from t"の値を変数に格納したいのですが。
>書き方がよくわかりません。
>OpenRecordsetだと思うのですが。
>
>超初心者なのでよろしくお願いします。


Dim db       As DAO.Database
Dim rs       As DAO.Recordset
Set db = CurrentDb()

strSQL1 = ""
strSQL1 = "" & "SELECT COUNT(*) as Kbn_Count FROM (SELECT FIELD2,FIELD3 FROM TBL_科目別 GROUP BY Field2,Field3) AS A"
strSQL1 = strSQL1 & " LEFT JOIN (SELECT CaseCode,CaseCode2 FROM TBL_区分マスタ) AS B"
strSQL1 = strSQL1 & " ON b.CaseCode=A.Field2 and B.CaseCode2=A.Field3"
strSQL1 = strSQL1 & " WHERE B.CaseCode IS NULL or B.CaseCode2 IS NULL"
  
  Set rs = db.OpenRecordset(strSQL1, dbOpenDynaset)
  
  If rs!Kbn_Count <> 0 Then
    rs.Close: Set rs = Nothing
    db.Close: Set db = Nothing
    
    Exit Function
  End If

はしょっただけですのですが・・・
ですがカウントだけならDcount関数というのも在るのでそちらでもいいかと

【8267】Re:DAOで集合関数の値を取得したい
質問  かめ  - 06/7/15(土) 1:33 -

引用なし
パスワード
   ▼レモン さん:
>▼かめ さん:
>>▼Gin_II さん:
>>>>VBAのDAOで集合SQLの値を取得する書き方を教えてください。
>>>
>>>集合SQLの値とは?
>>>OpenRecordset ではないということでしょうか?
>>
>>VBAで"select count(*) from t"の値を変数に格納したいのですが。
>>書き方がよくわかりません。
>>OpenRecordsetだと思うのですが。
>>
>>超初心者なのでよろしくお願いします。
>
>
>Dim db       As DAO.Database
>Dim rs       As DAO.Recordset
>Set db = CurrentDb()
>
>strSQL1 = ""
>strSQL1 = "" & "SELECT COUNT(*) as Kbn_Count FROM (SELECT FIELD2,FIELD3 FROM TBL_科目別 GROUP BY Field2,Field3) AS A"
>strSQL1 = strSQL1 & " LEFT JOIN (SELECT CaseCode,CaseCode2 FROM TBL_区分マスタ) AS B"
>strSQL1 = strSQL1 & " ON b.CaseCode=A.Field2 and B.CaseCode2=A.Field3"
>strSQL1 = strSQL1 & " WHERE B.CaseCode IS NULL or B.CaseCode2 IS NULL"
>  
>  Set rs = db.OpenRecordset(strSQL1, dbOpenDynaset)
>  
>  If rs!Kbn_Count <> 0 Then
>    rs.Close: Set rs = Nothing
>    db.Close: Set db = Nothing
>    
>    Exit Function
>  End If
>
>はしょっただけですのですが・・・
>ですがカウントだけならDcount関数というのも在るのでそちらでもいいかと

レモンさんありがとうございます。

もう少し簡単な例でご説明願いないでしょうか

たとえば、テーブルtのレコード数をメッセージ表示するような場合で
VBAの中でcountの集合SQLを直接書く場合・・・

DAOを利用してVBAでSQLを書きそこで取得したテーブルtのレコード数を変数hに格納しmsgbox(h)として表示させたいのですが。

よろしくお願いします。

【8268】Re:DAOで集合関数の値を取得したい
回答  Gin_II  - 06/7/15(土) 2:43 -

引用なし
パスワード
   > DAOを利用してVBAでSQLを書きそこで取得したテーブルtのレコード数を
> 変数hに格納しmsgbox(h)として表示させたいのですが。

DAO にこだわる理由は?

MsgBox DCount("*", "t")

でも、レコード数を求めることはできますよ。


Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim h As Long

Set db = Currentdb
Set rs = db.OpenRecordset("SELECT COUNT(*) AS FLD FROM t", dbOpenSnapshot)

h = rs!FLD

MsgBox h

【8270】Re:DAOで集合関数の値を取得したい
質問  かめ  - 06/7/15(土) 10:43 -

引用なし
パスワード
   ▼Gin_II さん:
>> DAOを利用してVBAでSQLを書きそこで取得したテーブルtのレコード数を
>> 変数hに格納しmsgbox(h)として表示させたいのですが。
>
>DAO にこだわる理由は?
>
>MsgBox DCount("*", "t")
>
>でも、レコード数を求めることはできますよ。
>
>
>Dim db As DAO.Database
>Dim rs As DAO.Recordset
>Dim h As Long
>
>Set db = Currentdb
>Set rs = db.OpenRecordset("SELECT COUNT(*) AS FLD FROM t", dbOpenSnapshot)
>
>h = rs!FLD
>
>MsgBox h


Gin_II さんありがとうございました。
無知な私にご指導いただきありがとうございます。

上記のコードをフォームf上のコマンドボタンに書きそのコマンドボタンを押した
時にメッセージボックスで表示させることができました。

ただそのフォームf上にあるテキストボックスtextに入力された値をaフィールドの抽出条件にする場合(テキストボックスに入力されたaフィールドの値だけをcountさせたい場合がDcountではうまくいきませんでした。

また、おしえていただいたコードで
Set rs = db.OpenRecordset("SELECT COUNT(*) AS FLD FROM t where a = forms!f!text", dbOpenSnapshot)のようにするとエラーになります。

where a = forms!f!textの書き方が間違っていると思いますが。

フォーム上のテキストボックスに入力された値を集合計算のフィールド抽出条件にする場合はどのように書いたらよいのでしょうか。

よろしかったら教えていただけないでしょうか。

【8271】Re:DAOで集合関数の値を取得したい
回答  よろずや  - 06/7/15(土) 11:26 -

引用なし
パスワード
   >>MsgBox DCount("*", "t")
>>
>>でも、レコード数を求めることはできますよ。

>ただそのフォームf上にあるテキストボックスtextに入力された値を
>aフィールドの抽出条件にする場合(テキストボックスに入力された
>aフィールドの値だけをcountさせたい場合がDcountでは
>うまくいきませんでした。

Dcount関数の第3引数をヘルプで確認しましょう。

【8272】Re:DAOで集合関数の値を取得したい
お礼  かめ  - 06/7/16(日) 8:22 -

引用なし
パスワード
   ▼よろずや さん:
>>>MsgBox DCount("*", "t")
>>>
>>>でも、レコード数を求めることはできますよ。
>
>>ただそのフォームf上にあるテキストボックスtextに入力された値を
>>aフィールドの抽出条件にする場合(テキストボックスに入力された
>>aフィールドの値だけをcountさせたい場合がDcountでは
>>うまくいきませんでした。
>
>Dcount関数の第3引数をヘルプで確認しましょう。


できました。

みなさんありがとうございました。

1205 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078226
(SS)C-BOARD v3.8 is Free