(1)1885-1 | パラメータが少なすぎます。 - VB初心者友の会 - Q&A掲示板過去ログ
http://www.gizcollabo.jp/vbtomo/log/archive/vbqanda_1885_1.html
にありますように、where句の後の「更新日」の型が数値型なのがいけないのか?等と考えたりしましたが、
これを文字列型にすると別のエラーのダイアログが出てきたので、検討違いのようでした。
そしてさらに調べますと、
(2)パラメータクエリを含むSQLをVBAから実行する - hatena chips
https://hatenachips.blog.fc2.com/blog-entry-478.html
にありますように、パラメータークエリが存在するのが原因ではないかと考えまして。
上記SQLだけをAccessのクエリデザインで実行してみますと、「パラメーターの入力」というダイアログが出てきて、
------------
契約件数
(テキストボックス)
------------
が出てきます。つまり上記SQL内の「sum(契約件数)」という箇所の"契約件数"という項目に原因があるのでは?と推測したのですが。
(2)の記事を参考にしても、SQL文をどのように修正したら、3601エラーが解消できるのか、応用ができず…具体的にどうすればエラーから抜け出せるか、お知恵をお貸しいただければ幸いです。
よろしくお願い致しますm(__)m
中に書いてる0.5が原因です。
別の数字に変更しろという意味だと思います。
皆さま、失礼しました。テーブルをこちら https://xfs.jp/mJk9Wn にアップしましたので、よかったら再度、ご確認いただけますと幸いです<m(__)m>
「概要テーブル」と「契約詳細テーブル」が入ってます。
最初の質問とエラー内容が変わってきておりますが…「演算子がありません」と出てきてしまいました。
下記のクエリを実行しようとした際です(ファイル内にはクエリとして保存されてないですが)。
--------------------------------------
select b.都道府県,count(B.都道府県) as 店舗実績
from(select a.都道府県,a.担当者
from(select 都道府県,担当者ID as 担当者,sum(目標値)/10 as ksum
from 概要テーブル
where 更新日 between 200401 and 200430
group by 都道府県,担当者ID
union all
select 都道府県,担当者,sum(契約件数) as ksum
from 契約詳細テーブル
where 更新日 between 200401 and 200430
group by 都道府県,担当者) as a
group by a.都道府県,a.担当者
having sum(a.ksum) >= 0.5) as b
group by b.都道府県
order by b.都道府県;
--------------------------------------
契約詳細テーブルに「契約件数」という列がないからでしょうか…でもテーブルを見ると、その列はやはり見当たらないような…もう1度、確認します。
▽2
●
a-kuma3 ●1000ポイント ベストアンサー |
質問の補足を受けて、確認してみました。
まず、これ。
最初の質問とエラー内容が変わってきておりますが…「演算子がありません」と出てきてしまいました。
下記のクエリを実行しようとした際です(ファイル内にはクエリとして保存されてないですが)。
多分、補足に貼りつけたままの SQL で実行していると思うのですが、インデントに全角の空白を使っているのがダメです。
半角の空白に置き換えると、最初の質問通りに、
上記SQLだけをAccessのクエリデザインで実行してみますと、「パラメーターの入力」というダイアログが出てきて
の状態になります。
これの原因は、「契約詳細テーブル」に、「契約件数」という列が無いからです。
勝手に想像するに、契約件数は担当者ごとに契約を取った件数でしょうから、こんな感じの SQL になるのではないかと思います。
select b.都道府県,count(B.都道府県) as 店舗実績 from(select a.都道府県,a.担当者 from(select 都道府県,担当者ID as 担当者,sum(目標値)/10 as ksum from 概要テーブル where 更新日 between 200401 and 200430 group by 都道府県,担当者ID union all select 都道府県,担当者,count(担当者) as ksum from 契約詳細テーブル where 更新日 between 200401 and 200430 group by 都道府県,担当者) as a group by a.都道府県,a.担当者 having sum(a.ksum) >= 0.5) as b group by b.都道府県 order by b.都道府県;
これで、とりあえずエラーはなくなります。
結果として抽出したデータに意味があるかどうかは、ちょっと疑問な感じはしますが。