• 締切済み

パラメーターが少なすぎます 1を指定してください

excel2003とaccess2003を使用しています。(OSはXPです) accessのデータベース上でで作成したクエリを、excelで作成したワークシートにインポート(クエリウィザードを使って)しています。 ところが、accessできちんと表示されるクエリが、同じようにインポートしようとしたら、「パラメーターが少なすぎます 1を指定してください」とでてインポートできません。 今までは、access上のデザインビューでクエリを作成していましたが、データ処理上、ユニオンクエリを使用したものにしたものがあります。それが、上述のエラーが出力されます。 クエリに間違いがあるのならエラーが出るのもうなずけますが、accessできちんと表示されるクエリであるため、どうしたらいいか思案しています。 D_販売というデータベースのテーブルに、職員コード、所属コード、販売個数、引受・販売、売上年月日、という項目があります。 職員コードは半角1~8桁、所属コードは半角2桁(固定)のデータが入っています。 従来は職員コード、所属コードそれぞれで実績を出力していましたが、それを1つのクエリで処理しなければならなくなりました。幸運にも職員コードで3桁の社員がいませんでしたので、所属コードに+100して3桁化し、処理しようとしました。 それで作ったのが以下のSQLです。 SELECT D_販売.職員コード, Sum(D_販売.販売個数) AS カタログデータ FROM D_販売 WHERE (((D_販売.引受・販売)="カタログデータ") AND ((D_販売.売上年月日)>=#4/1/2012# And (D_販売.売上年月日)<=#3/31/2013#)) GROUP BY D_販売.職員コード UNION SELECT 100+[所属コード] AS 職員コード, Sum(D_販売.販売個数) AS カタログデータ FROM D_販売 WHERE (((D_販売.引受・販売)="カタログデータ") AND ((D_販売.売上年月日)>=#4/1/2012# And (D_販売.売上年月日)<=#3/31/2013#)) GROUP BY 100+[所属コード]; どうぞよろしくお願いします。

みんなの回答

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

困りましたね。。。 Excel限定、VBA不可だと 正面突破しかなさそうですが、分かりません。 ユニオンクエリだとダメなのか・・を WinXP + Access2002 で試しましたが再現できませんでした。 あと考えられるのは、 更新の頻度が少なければテーブルに書き出して それをExcelから・・位です。 力不足ですみません。

yumerin_house
質問者

お礼

いろいろご検討くださりありがとうございました。 単純に読み込ますだけなんですが、こんなに苦労したのは初めてです。 何かいい方法があればいいのですが・・・

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

安直な案ですが、AccessでExcel形式でエクスポートしてはいかが? なお、UNIONだと重複を排除する処理が含まれますのでその分遅くなります。 UNION ALL ではマズイですかね。 蛇足かもしれませんが、こういう方法もあります。 Excel 97、Excel 2000、Excel 2002、Excel 2003 および Excel 2007 に 含まれる CopyFromRecordset メソッドを使用すると、レコードセットを特定の範囲に転送することができます http://support.microsoft.com/kb/246335/ja

yumerin_house
質問者

お礼

ご回答ありがとうございます。 エクセル形式でエクスポートする方法は試してみました。ですが、実際に使用するのはアクセスが使えない上司が、エクセルを閲覧して社員の実績を管理するといった使用方法なのです。そのため、開いたときに自動的に実績を取り込みたい、という要望があります。通常のデザインビューで作成したものは普通に開けるため、悩んでおります。 UNION ALLについては、調べているうちにそのほうが処理が早いことがわかり、結合するクエリは重複が含まれていないことが確実なので、いまはALLをつけています。 ですがインポートできないことには代わりないです。 CopyFromRecordset メソッドというのがあるのは初めて知りました。ですが今回はマクロを使っていないため、対象外とさせてください(会社のセキュリティポリシーで、マクロを使用したものは許可が要るのので面倒なのです。)。 引き続き、よろしくお願いします。