呵呵,这个不是很简单的么?
//参数 表名,字段名,字段值,排序方式
//如果字段名为''返回整个表
//sorttype 0生序,1降序,其他无排序
function getdateset(tbname:string;fieldname:string;fieldvalue:string;const sorttype:string='2');
begin
with tadoquery.create(application) do
begin
close;
sql.Clear;
sql.Add('exec getdateset '''+tbname+''','''+fieldname+''','''+fieldvalue+''','+sorttype);
open;
result:=Recordset;
close;
end;
end;
//创建一个存储过程
create proc getdateset
(@tbname varchar(50),
@fieldname varchar(50),
@fieldvalue varchar(50),
@sortType int)
as
declare @nsqlstr nvarchar(2000)
declare @tbid int
set @nsqlstr=''
--首先检测表是否存在
if not exists (select * from sysobjects where name=@tbname and type='u')
return
select @tbid=id from sysobjects where name=@tbname and type='u'
--检测字段是否存在
if not exists (select * from syscolumns where name=@fieldname and id=@tbid)
return
set @nsqlstr='select * from '+@tbname+' where 1=1 '
if (isnull(@fieldname,'')<>'')--如果有字段需要参考
begin
--构造查询语句
set @nsqlstr=@nsqlstr+'and '+@fieldname+'='''+@fieldvalue+''''
--设置是否排序0升序,1降序,其他不需要
set @nsqlstr=@nsqlstr+(case @sortType when 0 then 'order by '+ @fieldname when 1 then 'order by '+ @fieldname+' desc ' else '' end )
end
exec sp_executesql @nsqlstr
return
select distinct PJDZB.*,case when CSRQ between :begin_RQ and :end_RQ then cast(1 as bit) else cast(0 as bit) end as KJQJ
from PJDZB join PJDXB on PJDXB.PJDH=PJDZB.PJDH and SPID like isnull(:SPID,SPID)+'%'
where PJDZB.PJDH=isnull(:PJDH,PJDZB.PJDH) and
CSRQ between isnull(:b_RQ,CSRQ) and isnull(:e_RQ,CSRQ) and
PJLB in (isnull(:JH,0),isnull(:KT,0),isnull(:BR,0),isnull(:PY,0),
isnull(:XS,0),isnull(:GT,0),isnull(:BC,0),isnull(:PK,0)) and
KSH=isnull(:KSH,KSH)