以下这句SQL写到ADOQuery如何添加SELECT xm , bh , htje, ysfk , wsfk, xsrq , dh , bz FROM owner where zt = '未付清'
UNION
SELECT '合计' AS xm, '1000' AS bh, SUM(htje) , SUM(ysfk) , SUM(wsfk) , ' ' as xsrq, ' ' as dh, ' ' as bz FROM owner where zt = '未付清'
order by bh
这样错在哪里?
Datamodule2.ADOQueryReport.sql.clear;
Datamodule2.ADOQueryReport.sql.add('SELECT xm, bh, htje, ysfk, wsfk, xsrq, dh, bz FROM owner where zt =:val0 UNION SELECT :val1 AS xm, :val2 AS bh, SUM(htje), SUM(ysfk), SUM(wsfk), :val3 as xsrq, :val4 as dh, :val5 as bz FROM owner where zt =:val6 order by bh');
Datamodule2.ADOqueryReport.Parameters[0].Value := '未付清';
Datamodule2.ADOqueryReport.Parameters[1].Value := '合计';
Datamodule2.ADOqueryReport.Parameters[2].Value := ' ';
Datamodule2.ADOqueryReport.Parameters[3].Value := ' ';
Datamodule2.ADOqueryReport.Parameters[4].Value := ' ';
Datamodule2.ADOqueryReport.Parameters[5].Value := ' ';
Datamodule2.ADOqueryReport.Parameters[6].Value := '未付清';
Datamodule2.ADOQueryReport.Open;
UNION
SELECT '合计' AS xm, '1000' AS bh, SUM(htje) , SUM(ysfk) , SUM(wsfk) , ' ' as xsrq, ' ' as dh, ' ' as bz FROM owner where zt = '未付清'
order by bh
这样错在哪里?
Datamodule2.ADOQueryReport.sql.clear;
Datamodule2.ADOQueryReport.sql.add('SELECT xm, bh, htje, ysfk, wsfk, xsrq, dh, bz FROM owner where zt =:val0 UNION SELECT :val1 AS xm, :val2 AS bh, SUM(htje), SUM(ysfk), SUM(wsfk), :val3 as xsrq, :val4 as dh, :val5 as bz FROM owner where zt =:val6 order by bh');
Datamodule2.ADOqueryReport.Parameters[0].Value := '未付清';
Datamodule2.ADOqueryReport.Parameters[1].Value := '合计';
Datamodule2.ADOqueryReport.Parameters[2].Value := ' ';
Datamodule2.ADOqueryReport.Parameters[3].Value := ' ';
Datamodule2.ADOqueryReport.Parameters[4].Value := ' ';
Datamodule2.ADOqueryReport.Parameters[5].Value := ' ';
Datamodule2.ADOqueryReport.Parameters[6].Value := '未付清';
Datamodule2.ADOQueryReport.Open;
Datamodule2.ADOQueryReport.sql.clear;
Datamodule2.ADOQueryReport.sql.add('SELECT xm, bh, htje, ysfk, wsfk, xsrq, dh, bz FROM owner where zt =:val0 UNION SELECT :val1 AS xm, :val2 AS bh, SUM(htje), SUM(ysfk), SUM(wsfk), :val3 as xsrq, :val4 as dh, :val5 as bz FROM owner where zt =:val6 order by bh');
Datamodule2.ADOqueryReport.Parameters[0].Value := '''未付清''';
Datamodule2.ADOqueryReport.Parameters[1].Value := '''合计''';
Datamodule2.ADOqueryReport.Parameters[2].Value := ''' ''';
Datamodule2.ADOqueryReport.Parameters[3].Value := ''' ''';
Datamodule2.ADOqueryReport.Parameters[4].Value := ''' ''';
Datamodule2.ADOqueryReport.Parameters[5].Value := ''' ''';
Datamodule2.ADOqueryReport.Parameters[6].Value := '''未付清''';
Datamodule2.ADOQueryReport.Open;
Datamodule2.ADOQueryReport.sql.add('SELECT xm, bh, htje, ysfk, wsfk, xsrq, dh, bz FROM owner where zt =:val0 UNION SELECT :val1 AS xm, :val2 AS bh, SUM(htje), SUM(ysfk), SUM(wsfk), :val3 as xsrq, :val4 as dh, :val5 as bz FROM owner where zt =:val6 order by bh');
Datamodule2.ADOqueryReport.Parameters[0].Value := '未付清';
Datamodule2.ADOqueryReport.Parameters[1].Value := '合计';
Datamodule2.ADOqueryReport.Parameters[2].Value := ' ';
Datamodule2.ADOqueryReport.Parameters[3].Value := ' ';
Datamodule2.ADOqueryReport.Parameters[4].Value := ' ';
Datamodule2.ADOqueryReport.Parameters[5].Value := ' ';
Datamodule2.ADOqueryReport.Parameters[6].Value := '未付清';
Datamodule2.ADOQueryReport.Open;把你的 Datamodule2.ADOqueryReport.Parameters[0].Value := '未付清'; parameters中的编号改写成变量名看看效果如何 这样写正常来说是没问题的 考虑看你的SQL语句本身是否有问题
', N'@P1 varchar(3),@P2 varchar(2),@P3 varchar(1),@P4 varchar(1),@P5 varchar(1),@P6 varchar(1),@P7 varchar(3)'查询分析器上分析出来是这样的。服务器: 消息 8178,级别 16,状态 5,行 0
被准备语句 '(@P1 varchar(3),@P2 varchar(2),@P3 varchar(1),@P4 varchar(1),@P5' 需要参数 @P1,但未提供该参数。错在哪里啊。
Datamodule2.ADOQueryReport.sql.add('SELECT xm, bh, htje, ysfk, wsfk, xsrq, dh, bz FROM owner where zt =:val0 UNION SELECT :val1 AS xm, :val2 AS bh, SUM(htje), SUM(ysfk), SUM(wsfk), :val3 as xsrq, :val4 as dh, :val5 as bz FROM owner where zt =:val6 order by bh');
Datamodule2.ADOqueryReport.Parameters.ParamByName('val0').Value := '未付清';
Datamodule2.ADOqueryReport.Parameters.ParamByName('val1').Value := '合计';
Datamodule2.ADOqueryReport.Parameters.ParamByName('val2').Value := ' ';
Datamodule2.ADOqueryReport.Parameters.ParamByName('val3').Value := ' ';
Datamodule2.ADOqueryReport.Parameters.ParamByName('val4').Value := ' ';
Datamodule2.ADOqueryReport.Parameters.ParamByName('val5').Value := ' ';
Datamodule2.ADOqueryReport.Parameters.ParamByName('val6').Value := '未付清';
Datamodule2.ADOQueryReport.Active:=true;
xm bh htje ysfk wsfk xsrq dh bz
合 0 1900-1-1 正确的结果应该是有好几条记录,最后一个“合计”,不知道这个“合”是怎么来的。报错是没报错。
Datamodule2.ADOQueryReport.sql.add('SELECT xm, bh, htje, ysfk, wsfk, xsrq, dh, bz FROM owner where zt =''未付清'' UNION SELECT ''合计'' AS xm, '' '' AS bh, SUM(htje) as htje, SUM(ysfk) as ysfk, SUM(wsfk) as wsfk, '' '' as xsrq, '' '' as dh, '' '' as bz FROM owner where zt =''未付清'' order by bh');
你的方法是可以的,但有另一个问题:
'' '' as xsrq ,因为xsrq是日期型的,这句在SQL里执行的时候在‘合计’记录的‘xsrq’里显示的是“1900-1-1”,能不能不不让他显示,或者为空白。