dポイントプレゼントキャンペーン実施中!

SELECT SUMを 計算させると ゼロしか 出てきません。

どこが悪いのでしょうか?


 日付         出金       氏名
2012/12/10      540      安田
2012/12/10      1020      斉藤
2012/12/10       970      TOM
2012/12/11      650      池田 
2012/12/11     2010      南
2012/12/12      350      林田
2012/12/12     1200      加藤

のようなテーブルがあり

Private Sub コマンド_click()

Dim Db As Database
Dim SQL As String
Dim rs As Recordset
Dim gokei As Long
Set Db = CurrentDb

SQL = "SELECT Sum(出金) as gokei FROM テーブル  WHERE 日付= #" & [Forms]![フォームアルファ]![テキスト] & "# "
Set rs = Db.OpenRecordset(SQL)
MsgBox gokei

End Sub

を フォームアルファに 新しく作ったコマンドボタンのクリック時に 書きました。

これを テキストの日付を変えておいて いろいろ試しても ゼロのメッセージしか出ません。


WHERE以下が 間違っていないか 試しに

Private Sub コマンド_click()

Dim Db As Database
Dim SQL As String
Dim rs As Recordset
Dim Count As Long
Set Db = CurrentDb

SQL = "SELECT (出金)  FROM テーブル  WHERE 日付= #" & [Forms]![フォームアルファ]![テキスト] & "# "
Set rs = Db.OpenRecordset(SQL)

If rs.EOF Then
Count = 0
Else
rs.MoveLast
Count = rs.RecordCount
End If
MsgBox Count

End Sub

を 実行すると ちゃんと 正しいレコード数が 表示されます。

「出金」のデータ型は 長整数になっています。

どこが 悪いのでしょうか? 目的は 指定した日付の 出金の合計を取り出したいのです。
.
.
.

A 回答 (3件)

No1です。



少し説明すると、SQL文中のgokeiと、
変数宣言してのgokeiは当然ながら
別物ですから、
MsgBox gokei
のgokeiは変数宣言されたgokeiです。
SQL文中のgokeiにアプローチするには
この場合ならば、
rs!gokei
としてSQL文中のgokeiにレコードセットから
アプローチする必要があります。
つまり、変数としてのgokeiにSQL文中の
gokeiのデータを伝える手順が抜けている
ということです。

ここまで書けば、おそらく気がつかれるとは
思いますが。
    • good
    • 0
この回答へのお礼

ありがとうございました。うまくいきました。

SQL文中に 使うものは 宣言しなくてもよいのですね。

お礼日時:2012/12/31 10:46

SQL文には問題は有りません。


VBAの変数 goukei とSQL文中の goukei とはまったく無関係です。
なので、DAOでの処理の様ですので・・、☆は変更・追加点

Private Sub コマンド_click()
Dim Db As Database
Dim SQL As String
Dim rs As DAO.Recordset ’☆Recordset オブジェクトはADOにも有るため
Dim gokei As Long
Set Db = CurrentDb

SQL = "SELECT Sum(出金) as gokei FROM テーブル WHERE 日付= #" & [Forms]![フォームアルファ]![テキスト] & "# "
Set rs = Db.OpenRecordset(SQL)
MsgBox Rs!gokei ’☆
Rs.close:set rs = nothing ’☆後始末
Db.close:set Db = nothing ’☆
End Sub

のようになります。
でも今回の場合は、レコードセットを開かずともDsum関数で
Dsum("出金","そのテーブル名","日付 = #" & [Forms]![フォームアルファ]![テキスト] & "# ")
でも良いかもですね。
    • good
    • 0
この回答へのお礼

うまくいきました。 後始末まで 書いて頂き ありがとうございました。

お礼日時:2012/12/31 10:50

>Dim gokei As Long



これを削除するかコメントアウトして、

MsgBox rs!gokei

とする、でどうでしょうか。
gokeiはrsのフィールド名です。
    • good
    • 0

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