お世話になります。
エクセル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'
集計関数の一部として指定された式'出荷日'を含んでいないクエリを
実行しようとしました。
No.4ベストアンサー
- 回答日時:
集計関数には次のものがあります。
MAX:最大値
MIN:最小値
SUM:合計
AVG:平均
COUNT:件数
http://homepage2.nifty.com/inform/vbdb/sql_func. …
Accessではこの他にFIRST、LASTなどもありますが、方言なので
一般的なDBシステムでは存在しません。今回の事例では出荷量の
合計なので、SUMを使うところでしょう。
No.3
- 回答日時:
>未だ悩んでいます
どんなデータを表示したいかです。
そもそもグループ化する必要があるのか疑わしいですね。
むしろ、出荷日と品番でグループ化し、集荷量は出荷日の合計とか
いうほうが普通なんじゃないでしょうか。
とりあえず、どのような情報が収録されているか、どのような形式の
データが必要かをまとめることが大切です。
しつこくて何度もすみません。
>むしろ、出荷日と品番でグループ化し、集荷量は出荷日の合計とか
いうほうが普通なんじゃないでしょうか。
おっしゃる通りです。
グループ化は
mySQL = mySQL & " GROUP BY 出荷日, 品番;"
その「出荷量」を合計する記述の書き方が分からないで悩んでいます。
No.2
- 回答日時:
GROUP BY の指定項目以外(品番、ロケーション、出荷量)以外は
集計関数(MAX、MINなど)を使わなければなりません。
例えば、50人ずつ6クラスのクラス別成績を考えましょう。
クラスでグループ化するとなると、出てくるデータは6件です。
この時、点数はどうしますか?50人の点数の何を出すかです。
最大、最低、合計、平均、・・・こういうのは出せますが、単に「得点」
と言われても困るでしょう。だから集計関数が必要なのです。
尚、AccessをOLE起動して、TransferSpreadsheetを実行する方が
ずっと、高速です。データ量が多い場合は注意が必要です。
但し、Accessがインストールされていない場合はできません。
ありがとうございます。
その後、色々調べて見たのですが、
未だ悩んでいます。
>GROUP BY の指定項目以外(品番、ロケーション、出荷量)以外は
>集計関数(MAX、MINなど)を使わなければなりません。
具体的にどの様な記述をすれば宜しいでしょうか。
お教え頂きたくよろしくお願い致します。
No.1
- 回答日時:
GROUP BYに含まれない、かつ演算処理も指定していないフィールド「出荷日」をSELECTで抽出しようとしているためでしょう。
「出荷日」でもグループ化するよりないと思います。下記は、試しにAccessでやってみたSQLです。ご参考まで。SELECT 出荷データTMP.出荷日, 出荷データTMP.品番, 出荷データTMP.出荷量
FROM 出荷データTMP
GROUP BY 出荷データTMP.出荷日, 出荷データTMP.品番, 出荷データTMP.出荷量, 出荷データTMP.ロケーション
HAVING (((出荷データTMP.出荷量)<>0));
ありがとうございます。
「出荷日」もグループ化して見ました。
すると今度は違うエラーが発生しました。
実行時エラー'3601'
パラメータが少なすぎます。2を指定してください。
と出ます。
どうしていいものやら、困っています。
ご教授頂きたく宜しくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- Excel(エクセル) エクセルについて 8 2023/02/11 07:36
- MySQL mysqlがインストールされているのかどうか 1 2023/06/05 14:19
- MySQL MySQLでcreateが使えない MySQLを使ってデータベースを作ろうと思い、CREATE を使 3 2022/06/19 15:32
- MySQL mysqlがインストールされているのかわかりません 1 2023/06/05 02:26
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- MySQL 共通点はあります。何が違うのでしょうか? 1 2023/01/27 05:22
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
合計3TBのデータのハッシュ値を...
-
教えて下さい
-
配列でデータが入っている要素...
-
【エクセル】測定時間がバラバ...
-
Accessで該当データにフラグを...
-
多量のSUMIF式を軽くしたい
-
[C言語] コメント文字列を無視...
-
メモ帳(テキストデータ)をExc...
-
Excelのマクロでワードのテキス...
-
C言語プログラム変更
-
配列の勉強をしています。使用...
-
ノイズの入った波形をきれいな...
-
VBAを使ってOutlookメール本文...
-
モジュラス103の算出方法について
-
ビットシフトについて
-
win7でvbsファイルが実行できない
-
EXCELVBAでSQLserverからデータ...
-
HTMLでテキストボックスで...
-
CString型の文字列連結について
-
GETはできるがPOSTができない、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
配列でデータが入っている要素...
-
【エクセル】測定時間がバラバ...
-
メモ帳(テキストデータ)をExc...
-
VBA 空白セルを削除ではない方...
-
多量のSUMIF式を軽くしたい
-
Excelのマクロでワードのテキス...
-
エクセルで2つの時系列のデー...
-
この行は既に別のテーブルに属...
-
VBAを使ってOutlookメール本文...
-
シーケンサにパソコンからアク...
-
EXCELVBAでSQLserverからデータ...
-
ブレーカー落ちで壊れたりしな...
-
[C言語] コメント文字列を無視...
-
オープンチヤットでデータ削除...
-
モジュラス103の算出方法について
-
javaでDBからデータを取ってき...
-
カンマからスラッシュに
-
VBA 毎日取得するデータを順番...
-
Android携帯をUSBメモリ代わりに
おすすめ情報