Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

同じSQL文なのにクエリとVBAで結果が異なる

794 views
Skip to first unread message

大東

unread,
Jan 28, 2009, 1:18:01 AM1/28/09
to
いつもお世話になります。
経緯は、
(1)VBAでSELECT文を書いて結果を取ったら、出るはずなのにレコード数ゼロ(.EOF)になった。
(2)そのSQL文をクエリのSQLビューにコピーして実行したら、期待通りの結果が出た。
とても納得できないのですがなぜでしょうか。
VBAのコードは以下の通りです。
どなたかお気づきの点がございましたら、ご教授の程お願いします。
フォーム、テーブル、アプリケーションの閉じる/開き直すは検証済みです。

----------------ここから------------------------------------------------
Dim dbado As ADODB.Connection
Dim rst1 As ADODB.Recordset
Dim V_過剰金額 As Double, V_過剰商品数 As Long _
, V_不動金額 As Double, V_不動商品数 As Long _
, V_不動金額B As Double, V_不動商品数B As Long

'################ 接続/レコードセット ################
Set dbado = Application.CurrentProject.Connection
Set rst1 = New ADODB.Recordset

'################ 金額・商品数取得:在庫 ################
With rst1
.Open "SELECT SUM(在庫金額) AS 金額,COUNT(商品コード) AS 商品数 FROM 在庫累積データ _
WHERE 当月文字列='" & Me![選択_年月] & "' AND 種別 Like '*過剰*' _
GROUP BY 当月文字列;", dbado, adOpenDynamic, adLockOptimistic
If .EOF Then
V_過剰金額 = 0: V_過剰商品数 = 0
Else
V_過剰金額 = ![金額]: V_過剰商品数 = ![商品数]
End If
.Close
End With

'################ 切断 ################
Set rst1 = Nothing
dbado.Close: Set dbado = Nothing

----------------ここまで------------------------------------------------

*WHEREのところの「Me![選択_年月]」は、
このコードを実行するフォーム内にあるコンボボックスで、
値を正常に取得していることを確認しています。
ここを「2008年12月」のように定数直書きにしても結果は同じでした。

大東

unread,
Jan 28, 2009, 1:32:01 AM1/28/09
to
すみません、自己レスです。
ADOでSQL文を書くときは、Likeのワイルドカードは"*"ではなく"%"、
というのを知りませんでした。
修正したら同じ結果が返りました。お騒がせしました。

"大東" からの元のメッセージ:

0 new messages