こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

QNo.5140808

すぐに回答ほしいです

質問者が選んだベストアンサー

エラーは「含んでいないクエリを実行しようとしました」ではないですか。
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

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

mySQL = mySQL & " WHERE (((ロケーション) <> "A9999"))"
              ↓
mySQL = mySQL & " WHERE ロケーション <> ""A9999"""
mySQL = mySQL & " WHERE ロケーション <> 'A9999'"
※2行にするのではなく、どちらか一方を選んでください。

投稿日時 - 2009-07-21 09:35:09

ANo.1

mySQL = mySQL & " WHERE (((ロケーション) <> 'A9999'))"

 " ではなく' なのでは?

投稿日時 - 2009-07-20 17:12:47

あなたにオススメの質問