Delphi带参数的方法。
procedure shuaixi(DBGridstring:string);
procedure TForm1.shuaixi(DBGridstring:string);
var
DBGridstring:string;
begin
//
DBGridstring.DataSource:=niL;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT Dormitory,case when CheckSex=1 then N''男'' else N''女'' end CheckSex,'+
'CheckContact,'+
'CheckQty,'+
'CheckQty1,'+
'CheckQty2,'+
'Checkfacilities from Checke');
DBGridstring.DataSource:=DataSource1;
ADOQuery1.Active:=false;
ADOQuery1.Active:=true;
调用
Form1.shuaixi(DBGrid1);
end;
......
public
{ Public declarations }
procedure shuaixi(DBGrid: TDBGrid; PrevDBGrid: TDBGrid=nil; SqlText: string='');
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//如果不在乎一个数据集带着多个栅格,就不要定义和使用第二个参数
//如果查询语句是固定的,就不要定义和使用第三个参数
procedure TForm1.shuaixi(DBGrid: TDBGrid; PrevDBGrid: TDBGrid=nil; SqlText: string='');
const DefaultSqlText=
'SELECT Dormitory,case when CheckSex=1 then N''男'' else N''女'' end CheckSex, CheckContact, CheckQty,'
+'CheckQty1, CheckQty2, Checkfacilities from Checke';
begin
if PrevDBGrid<>nil then
PrevDBGrid.DataSource:=nil;//将前面原来连接着的栅格断开与数据源的连接
ADOQuery1.Close;
if SqlText='' then //如果没传入的语句
ADOQuery1.SQL.Text:= DefaultSqlText//用默认的语句查询
else
ADOQuery1.SQL.Text:= SqlText;//用传入的sql语句进行查询
ADOQuery1.Active:=true;//.Open; //激活数据集
if DBGrid.DataSource=nil then //如果栅格没数据源
DBGrid.DataSource:=TDataSource.Create(self);//动态建立一个
DBGrid.DataSource.DataSet:=ADOQuery1;//关联数据集
end;
procedure TForm1.Button1Click(Sender: TObject);//第一次调用(使用内置的语句查询)
begin
shuaixi(DBGrid1);
end;
procedure TForm1.Button2Click(Sender: TObject);//第二次调用(使用指定语句查询)
var Sqlstr:string;
begin
Sqlstr:='select * from address';
shuaixi(DBGrid2, DBGrid1, Sqlstr);
end;
procedure TForm1.Button3Click(Sender: TObject);//第三次调用(使用内置的语句查询)
begin
shuaixi(DBGrid3, DBGrid2);
end;
......