VB,SQL文のWHERE句について
お世話になります。
エクセルVBにて、ACCESSのテーブルのデータを
SQL分にてエクセルシートに書き出そうとしているの
ですが、WHERE句の記述方法がおかしいのかエラーになっ
てしまいます。(下記の「A9999」(データ型はテキスト
型)のところでエラーになります。
どの様な記述をすれば宜しいのでしょうか。
ご教授頂きたくよろしくお願いします。
記
・記述内容
mySQL = "SELECT 出荷日, 品番, ロケーション, SUM(出荷量) AS 出荷量の合計"
mySQL = mySQL & " FROM 出荷データTMP"
mySQL = mySQL & " WHERE (((ロケーション) <> "A9999"))"
mySQL = mySQL & " GROUP BY 品番, ロケーション, 出荷量;"
Set rs = db.OpenRecordset(mySQL, dbOpenSnapshot)
投稿日時 - 2009-07-20 16:23:58
エラーは「含んでいないクエリを実行しようとしました」ではないですか。
Googleで「含んでいないクエリを実行しようとしました」で照会すると、沢山記事が出ます。SQL勉強の落とし穴かなと思います。
ーーー
エクセルでMsクエリでやってみた(マクロの記録でGroupまで出来ないかと思った)ので、少しSQL文の様子が違うと思いますが
SELECT 出荷テーブル.品番, 出荷テーブル.ロケーション, Sum(出荷テーブル.出荷量)
FROM `C:\Documents and Settings\xxxx\My Documents\社員2`.出荷テーブル 出荷テーブル
GROUP BY 出荷テーブル.品番, 出荷テーブル.ロケーション
で実行し
結果
品番 ロケーション 出荷量の集計
11A130.0
11A25.0
11A325.0
12A150.0
12A215.0
12A345.0
のような結果を望んでいるのでは。
1項目の集計である、SUM(出荷量)のようなSQL以外では、
>GROUP BY 品番, ロケーション, 出荷量;"の出荷量はグループ化しない。Group化するとは、どうするのか考えてください。
>出荷日はGROUP BY 品番, ロケーション, 出荷量;"の中に無い。
日別を希望するなら出荷日でグループ化しなければならないし、そうでなければ、例えば
ロケーションでまとめれば、その中には日付がバラバラで有るのが普通で、どれを挙げて良いかACCESSのSQLにはわからない。
例えば1学年の生徒にクラス(級)ごとに集れ、1組の生徒に向かって、名前を言え、と先生が言っても、個人の名前は1つでは言い表せないようなもの。現実の生徒なら、慣習で何らかの順番に、順次自分の名前を時間差で唱える(点呼)だろうが、SOLは1つのグループで1つの出荷日といわれてもどうしようか困っちゃう。
投稿日時 - 2009-07-20 22:22:25
このQ&Aは役に立ちましたか?
0人が「このQ&Aが役に立った」と投票しています
回答(3)