如何将下面长的语句加入ADOQuery中,用
with ADOQuery1 do
begin
SQL.Text:='.......';
OPen;
end;就是这些语句
declare @sql varchar(8000)
set @sql = 'select 学号,姓名,班级,学期'
select @sql = @sql + ',max(case 科目名称
when '''+科目名称+''' then cast(成绩 as varchar(10)) end) ['+科目名称+']
,max(case 科目名称 when '''+科目名称+''' then cast(补考 as varchar(10)) end) ['+科目名称+'补考]'
from (select distinct 科目名称 from 成绩表 where 班级='2000电算会计') as a
select @sql=@sql+' from 成绩表 where 班级=''2000电算会计'' and 学期=1 group by 学号,姓名,班级,学期'
exec(@sql)
with ADOQuery1 do
begin
SQL.Text:='.......';
OPen;
end;就是这些语句
declare @sql varchar(8000)
set @sql = 'select 学号,姓名,班级,学期'
select @sql = @sql + ',max(case 科目名称
when '''+科目名称+''' then cast(成绩 as varchar(10)) end) ['+科目名称+']
,max(case 科目名称 when '''+科目名称+''' then cast(补考 as varchar(10)) end) ['+科目名称+'补考]'
from (select distinct 科目名称 from 成绩表 where 班级='2000电算会计') as a
select @sql=@sql+' from 成绩表 where 班级=''2000电算会计'' and 学期=1 group by 学号,姓名,班级,学期'
exec(@sql)
解决方案 »
- Delphi 2011 来了
- 我想用webbrowser模拟鼠标选择radio的第二项,请问怎么做。
- 新手:为什么我的 Delphi 2007 的 Tool Palette 中看不到 ActiveX 这一页?
- StringGrid 与 DrawGrid 有何区别?
- 请问如何获取url重定向后的网页内容??!!
- 如何加上电脑的ip地址?
- 哪位知道delphi7(中文平台)安装盘压缩文件的解压密码,请告知,万分感谢!!
- 关于Delphi调用Api的速度问题
- 如何使dbgrideh中的下拉列表仅可选择,不可编辑?
- 请问如何用TDatabase直接连接Access库?
- 帮忙,请教一个问题!
- 全程函数应该如何申明?在哪儿申明?
例如要在sql中写下列语句:
select * from tablename
where id=123
order by id;在delphi中:
sql.clear;
sql.add('select * from tablename');
sql.add('where id=123');
sql.add('order by id;');
至于你的程序,你自己照这个方式写写试试
楼上的方法也可以
另外提供一种
cSql :='select * from fieldName=%s';
query.sql.text := format(cSql,[****]);
可以传参数楼主的建议用存储过程
其他的好处不说 单调试就可节约不少时间
在delphi中的实现
var tsql:string;
begin
tsql := 'select 学号,姓名,班级,学期' ;
tsql := tsql + ',max(case 科目名称
when '''+科目名称+''' then cast(成绩 as varchar(10)) end) ['+科目名称+']
,max(case 科目名称 when '''+科目名称+''' then cast(补考 as varchar(10)) end) ['+科目名称+'补考]'
from (select distinct 科目名称 from 成绩表 where 班级='2000电算会计') as a
select @sql=@sql+' from 成绩表 where 班级=''2000电算会计'' and 学期=1 group by 学号,姓名,班级,学期' with ADOQuery1 do
begin
SQL.Add(tsql);
OPen;
end;
var tsql:string;
begin
tsql := 'select 学号,姓名,班级,学期' ;
tsql := tsql + ',max(case 科目名称
when '''+科目名称+''' then cast(成绩 as varchar(10)) end) ['+科目名称+']
,max(case 科目名称 when '''+科目名称+''' then cast(补考 as varchar(10)) end) ['+科目名称+'补考]' ;
tsql:=tsql+' from 成绩表 where 班级=''2000电算会计'' and 学期=1 group by 学号,姓名,班级,学期'; with ADOQuery1 do
begin
SQL.Add(tsql);
OPen;
end;--------------------------------------
看见了么,
那支蛾子,
正飞向太阳,
那就是我!
--------------------------------------
用add!
用adoquery的确比较麻烦,因为你要用循环,楼上说得不错,用存储过程吧
create proc urporc(
@name varchar(100)
) asdeclare @sql varchar(8000)
set @sql = 'select 学号,姓名,班级,学期'
select @sql = @sql + ',max(case 科目名称
when '''+科目名称+''' then cast(成绩 as varchar(10)) end) ['+科目名称+']
,max(case 科目名称 when '''+科目名称+''' then cast(补考 as varchar(10)) end) ['+科目名称+'补考]'
from (select distinct 科目名称 from 成绩表 where 班级=@name) as a select @sql=@sql+' from 成绩表 where 班级='''+ @name+''' and 学期=1 group by 学号,姓名,班级,学期'
exec(@sql)
return程序中
with ADOQuery1 do
begin
SQL.Add('exec urporc ''' + '2000电算会计' + '''' );
OPen;
end;