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

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

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

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

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

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;


现在我想改成动态的查询,但是却报错,不知道什么原因。
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+', ...

热点排行