首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

select动态查询OLE error 800A0E7C请大家伙儿帮忙看看

2012-09-29 
select动态查询OLE error 800A0E7C请大家帮忙看看我想实现如图所示的效果,根据radiogroup选的不同然后做各

select动态查询OLE error 800A0E7C请大家帮忙看看

我想实现如图所示的效果,根据radiogroup选的不同然后做各个分类汇总,现在我的代码是静态的查询,效果如图,

Delphi(Pascal) code
SQLStr :='SELECT 业务员, SUM(CASE WHEN month(操作时间) = 1 THEN 台数 ELSE 0 END) AS "1月份总额",SUM(CASE WHEN month(操作时间) = 2 THEN 台数 ELSE 0 END) AS "2月份总额",SUM(CASE WHEN month(操作时间) = 3 THEN 台数 ELSE 0 END) AS "3月份总额",'  +'SUM(CASE WHEN month(操作时间) = 4 THEN 台数 ELSE 0 END) AS "4月份总额",SUM(CASE WHEN month(操作时间) = 5 THEN 台数 ELSE 0 END) AS "5月份总额", SUM(CASE WHEN month(操作时间) = 6 THEN 台数 ELSE 0 END) AS "6月份总额",'  +' SUM(CASE WHEN month(操作时间) = 7 THEN 台数 ELSE 0 END) AS "7月份总额", SUM(CASE WHEN month(操作时间) = 8 THEN 台数 ELSE 0 END) AS "8月份总额", SUM(CASE WHEN month(操作时间) = 9 THEN 台数 ELSE 0 END) AS "9月份总额",'  +' SUM(CASE WHEN month(操作时间) = 10 THEN 台数 ELSE 0 END) AS "10月份总额", SUM(CASE WHEN month(操作时间) = 11 THEN 台数 ELSE 0 END) AS "11月份总额", SUM(CASE WHEN month(操作时间) = 12 THEN 台数 ELSE 0 END) AS "12月份总额" '+'FROM 订车合同 where year(操作时间)=2012 GROUP BY 业务员';  ADOQuery1.Close;  ADOQuery1.Close;  ADOQuery1.SQL.Clear;  ADOQuery1.SQL.Add(SQLStr);  ADOQuery1.Open;


现在我想改成动态的查询,但是却报错,不知道什么原因。
Delphi(Pascal) code
SQLStr :='SELECT :leixing, SUM(CASE WHEN month(操作时间) = 1 THEN :paiming ELSE 0 END) AS "1月份总额",SUM(CASE WHEN month(操作时间) = 2 THEN :paiming ELSE 0 END) AS "2月份总额",SUM(CASE WHEN month(操作时间) = 3 THEN :paiming ELSE 0 END) AS "3月份总额",'  +'SUM(CASE WHEN month(操作时间) = 4 THEN :paiming ELSE 0 END) AS "4月份总额",SUM(CASE WHEN month(操作时间) = 5 THEN :paiming ELSE 0 END) AS "5月份总额", SUM(CASE WHEN month(操作时间) = 6 THEN :paiming ELSE 0 END) AS "6月份总额",'  +' SUM(CASE WHEN month(操作时间) = 7 THEN :paiming ELSE 0 END) AS "7月份总额", SUM(CASE WHEN month(操作时间) = 8 THEN :paiming ELSE 0 END) AS "8月份总额", SUM(CASE WHEN month(操作时间) = 9 THEN :paiming ELSE 0 END) AS "9月份总额",'  +' SUM(CASE WHEN month(操作时间) = 10 THEN :paiming ELSE 0 END) AS "10月份总额", SUM(CASE WHEN month(操作时间) = 11 THEN :paiming ELSE 0 END) AS "11月份总额", SUM(CASE WHEN month(操作时间) = 12 THEN :paiming ELSE 0 END) AS "12月份总额" '+'FROM 订车用户合同 where year(操作时间)=:nianfen GROUP BY :leixing';  ADOQuery1.Close;  ADOQuery1.Close;  ADOQuery1.SQL.Clear;  ADOQuery1.SQL.Add(SQLStr);case RadioGroup1.ItemIndex of  0: ADOquery1.Parameters.ParamByName('leixing').Value:='车型';  1: ADOquery1.Parameters.ParamByName('leixing').Value:='区域';  2: ADOquery1.Parameters.ParamByName('leixing').Value:='客户';  3: ADOquery1.Parameters.ParamByName('leixing').Value:='业务员';  4: ADOquery1.Parameters.ParamByName('leixing').Value:='品系';  5: ADOquery1.Parameters.ParamByName('leixing').Value:='订单类型';  end;case RadioGroup2.ItemIndex of  0: ADOquery1.Parameters.ParamByName('paiming').Value:='台数';  1: ADOquery1.Parameters.ParamByName('paiming').Value:='总价';  end;   ADOquery1.Parameters.ParamByName('nianfen').Value:=spinEdit1.Value;   ADOQuery1.Open;


[解决办法]
select后面字段不能是参数,用参数的话,就视为具体的值(不是字段名)

改用变量方法吧,注意空格: 'SELECT '+leixing+', ...

热点排行