Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Access 2007)
検索後のレコードセットに対するDsum
投稿日時: 19/08/26 16:40:53
投稿者: こも

期間を設定して抽出したレコードセットのうち、特定の製品コードの金額フィールドの合計を求めたいのですが、以下の記述ですと
「入力テーブルまたはクエリ’myRS’が見つかりませんでした。」というエラーとなります。
 
mySQL = "select * from tbl出納帳作成用 where 入出金日 between #" & myStdate & "# and #" & myEddate & "#"
Set myRS = myDB.OpenRecordset(mySQL, dbOpenDynaset)
 
mySum = DSum("[収入金額]", "myRS", "[科目コード] = 'myItemID'")
 
Dsumを使った記述をどのように修正すればいいでしょうか?
 
宜しくお願いいたします。

回答
投稿日時: 19/08/28 11:13:51
投稿者: sk

引用:
期間を設定して抽出したレコードセットのうち、
特定の製品コードの金額フィールドの合計を求めたい

引用:
mySQL = "select * from tbl出納帳作成用 where 入出金日 between #" & myStdate & "# and #" & myEddate & "#"
Set myRS = myDB.OpenRecordset(mySQL, dbOpenDynaset)
  
mySum = DSum("[収入金額]", "myRS", "[科目コード] = 'myItemID'")

mySQL = "select Sum([収入金額]) AS [収入金額合計]" & _
        " from [tbl出納帳作成用]" & _
        " where ([入出金日] between #" & myStdate & "# and #" & myEddate & "#)" & _
        " and ([科目コード] = '" & myItemID & "')"
 
Set myRS = myDB.OpenRecordset(mySQL, dbOpenDynaset)
  
If myRS.EOF = False Then
    mySum = Nz(myRS![収入金額合計], 0)
Else
    mySum = 0
End If
 
引用:
mySum = DSum("[収入金額]", "myRS", "[科目コード] = 'myItemID'")

引用:
入力テーブルまたはクエリ’myRS’が見つかりませんでした。」というエラーとなります。

[myRS]という名前のテーブル/クエリがカレントデータベースに
存在しないからです。
 
DSum 関数の各引数に渡すべきなのは全て文字列式( String 型)であって、
DAO.Recordset のようなオブジェクトを渡すことは出来ません。
 
単に DSum 関数だけで上記のコードと同じ結果を得たいのであれば、
次のように記述なさればよいでしょう。
 
---------------------------------------------------------------
 
Dim strCriteria As String
 
strCriteria = "([入出金日] between #" & myStdate & "# and #" & myEddate & "#)" & _
              " and ([科目コード] = '" & myItemID & "')"
 
mySum = DSum("[収入金額]", "tbl出納帳作成用", strCriteria)
 
---------------------------------------------------------------

投稿日時: 19/09/03 11:51:56
投稿者: こも

返事が遅くなり申し訳ありませんでした。
解決いたしました。いろいろありがとうございました。