• ベストアンサー

エクセルVBにて

お世話になります。 エクセル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'  集計関数の一部として指定された式'出荷日'を含んでいないクエリを  実行しようとしました。

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.4

集計関数には次のものがあります。 MAX:最大値 MIN:最小値 SUM:合計 AVG:平均 COUNT:件数 http://homepage2.nifty.com/inform/vbdb/sql_func.htm Accessではこの他にFIRST、LASTなどもありますが、方言なので 一般的なDBシステムでは存在しません。今回の事例では出荷量の 合計なので、SUMを使うところでしょう。

miruchoko
質問者

お礼

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

その他の回答 (3)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

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

miruchoko
質問者

お礼

しつこくて何度もすみません。 >むしろ、出荷日と品番でグループ化し、集荷量は出荷日の合計とか  いうほうが普通なんじゃないでしょうか。 おっしゃる通りです。 グループ化は mySQL = mySQL & " GROUP BY 出荷日, 品番;" その「出荷量」を合計する記述の書き方が分からないで悩んでいます。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

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

miruchoko
質問者

お礼

ありがとうございます。 その後、色々調べて見たのですが、 未だ悩んでいます。 >GROUP BY の指定項目以外(品番、ロケーション、出荷量)以外は >集計関数(MAX、MINなど)を使わなければなりません。 具体的にどの様な記述をすれば宜しいでしょうか。 お教え頂きたくよろしくお願い致します。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

GROUP BYに含まれない、かつ演算処理も指定していないフィールド「出荷日」をSELECTで抽出しようとしているためでしょう。「出荷日」でもグループ化するよりないと思います。下記は、試しにAccessでやってみたSQLです。ご参考まで。 SELECT 出荷データTMP.出荷日, 出荷データTMP.品番, 出荷データTMP.出荷量 FROM 出荷データTMP GROUP BY 出荷データTMP.出荷日, 出荷データTMP.品番, 出荷データTMP.出荷量, 出荷データTMP.ロケーション HAVING (((出荷データTMP.出荷量)<>0));

miruchoko
質問者

お礼

ありがとうございます。 「出荷日」もグループ化して見ました。 すると今度は違うエラーが発生しました。 実行時エラー'3601' パラメータが少なすぎます。2を指定してください。 と出ます。 どうしていいものやら、困っています。 ご教授頂きたく宜しくお願いいたします。

関連するQ&A