プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。
エクセルVBにて、ACCESSのテーブルのデータを
SQL分にてエクセルシートに書き出そうとしているの
ですが、OpenRecordsetをする時、
エラーメッセージが出てしまいます。
どうすれば書き出せるのでしょうか。
ご教授頂きたくよろしくお願いします。

    記

・記述内容
 mySQL = "SELECT 出荷日, 品番, 出荷量"
 mySQL = mySQL & " FROM 出荷データTMP"
 mySQL = mySQL & " WHERE (((出荷量) <> 0))"
 mySQL = mySQL & " GROUP BY 品番, ロケーション, 出荷量;"
 Set rs = db.OpenRecordset(mySQL, dbOpenSnapshot) ←ここでエラーが出る

・エラー内容
 実行時エラー'3122'
 集計関数の一部として指定された式'出荷日'を含んでいないクエリを
 実行しようとしました。

A 回答 (4件)

集計関数には次のものがあります。


MAX:最大値
MIN:最小値
SUM:合計
AVG:平均
COUNT:件数
http://homepage2.nifty.com/inform/vbdb/sql_func. …

Accessではこの他にFIRST、LASTなどもありますが、方言なので
一般的なDBシステムでは存在しません。今回の事例では出荷量の
合計なので、SUMを使うところでしょう。
    • good
    • 1
この回答へのお礼

何度もご回答頂きありがとうございました。
大変参考になりました。

お礼日時:2009/07/20 17:26

>未だ悩んでいます


どんなデータを表示したいかです。
そもそもグループ化する必要があるのか疑わしいですね。
むしろ、出荷日と品番でグループ化し、集荷量は出荷日の合計とか
いうほうが普通なんじゃないでしょうか。
とりあえず、どのような情報が収録されているか、どのような形式の
データが必要かをまとめることが大切です。
    • good
    • 0
この回答へのお礼

しつこくて何度もすみません。

>むしろ、出荷日と品番でグループ化し、集荷量は出荷日の合計とか
 いうほうが普通なんじゃないでしょうか。

おっしゃる通りです。

グループ化は
mySQL = mySQL & " GROUP BY 出荷日, 品番;"

その「出荷量」を合計する記述の書き方が分からないで悩んでいます。

お礼日時:2009/07/20 10:38

GROUP BY の指定項目以外(品番、ロケーション、出荷量)以外は


集計関数(MAX、MINなど)を使わなければなりません。
例えば、50人ずつ6クラスのクラス別成績を考えましょう。
クラスでグループ化するとなると、出てくるデータは6件です。
この時、点数はどうしますか?50人の点数の何を出すかです。
最大、最低、合計、平均、・・・こういうのは出せますが、単に「得点」
と言われても困るでしょう。だから集計関数が必要なのです。
尚、AccessをOLE起動して、TransferSpreadsheetを実行する方が
ずっと、高速です。データ量が多い場合は注意が必要です。
但し、Accessがインストールされていない場合はできません。
    • good
    • 0
この回答へのお礼

ありがとうございます。
その後、色々調べて見たのですが、
未だ悩んでいます。

>GROUP BY の指定項目以外(品番、ロケーション、出荷量)以外は
>集計関数(MAX、MINなど)を使わなければなりません。

具体的にどの様な記述をすれば宜しいでしょうか。
お教え頂きたくよろしくお願い致します。

お礼日時:2009/07/19 22:44

GROUP BYに含まれない、かつ演算処理も指定していないフィールド「出荷日」をSELECTで抽出しようとしているためでしょう。

「出荷日」でもグループ化するよりないと思います。下記は、試しにAccessでやってみたSQLです。ご参考まで。
SELECT 出荷データTMP.出荷日, 出荷データTMP.品番, 出荷データTMP.出荷量
FROM 出荷データTMP
GROUP BY 出荷データTMP.出荷日, 出荷データTMP.品番, 出荷データTMP.出荷量, 出荷データTMP.ロケーション
HAVING (((出荷データTMP.出荷量)<>0));
    • good
    • 0
この回答へのお礼

ありがとうございます。
「出荷日」もグループ化して見ました。
すると今度は違うエラーが発生しました。

実行時エラー'3601'
パラメータが少なすぎます。2を指定してください。

と出ます。
どうしていいものやら、困っています。
ご教授頂きたく宜しくお願いいたします。

お礼日時:2009/07/19 23:41

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