procedure TfrmTest2.btn1Click(Sender: TObject);
begin
adoquery1.Active:=False;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from frmTest1');
adoquery1.Active:=True;
begin
if cbb1.Text='升序' then
adoquery1.Recordset.Sort:='年龄 asc'
else
adoquery1.Recordset.Sort:='年龄 desc'
end;
end;
我哪里出错了,求指导下,想的头疼
procedure TfrmTest2.btn1Click(Sender: TObject);
begin
adoquery1.Active:=False;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from frmTest1');
adoquery1.Active:=True;
begin{目测此处多了个begin}
if cbb1.Text='升序' then
adoquery1.Recordset.Sort:='年龄 asc'
else
adoquery1.Recordset.Sort:='年龄 desc'
end{目测此处多了个end}
end;
改后:procedure TfrmTest2.btn1Click(Sender: TObject);
begin
adoquery1.Active:=False;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from frmTest1');
adoquery1.Active:=True;
if cbb1.Text='升序' then
adoquery1.Recordset.Sort:='年龄 asc'
else
adoquery1.Recordset.Sort:='年龄 desc'
end;
begin
adoquery1.Active:=False;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from frmTest1');
adoquery1.Active:=True;
if cbb1.Text='升序' then
adoquery1.Recordset.Sort:='年龄 asc'
else
adoquery1.Recordset.Sort:='年龄 desc';
end;
procedure TfrmTest2.btn1Click(Sender: TObject);
begin
with qry1 do begin
close;
sql.clear;
sql.add('select * from frmTest1');
open;
if cbb1.Text='升序' then
Recordset.Sort:='年龄 asc'
else
Recordset.Sort:='年龄 desc';
end;
end;
procedure TfrmTest2.btn1Click(Sender: TObject);
var SQL:string;
begin
SQL:='select * from frmTest1 ';
if cbb1.Text='升序'
then SQL:=SQL+'order by ''年龄'''
else SQL:=SQL+'order by ''年龄'' desc ';
adoquery1.Active:=False;
adoquery1.SQL.Clear;
adoquery1.SQL.Add(SQL);
adoquery1.Active:=True;
end;
不明白为什么在前面加个recordset
sort属性,设置 完之后不需要手工刷新的
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from frmTest1');
adoquery1.Open;//一般情况下尽量不要用Active属性,尽量使用Close和Open过程
case cbb1.itemindex of //尽量用CASE吧,不容易眼花
0: adoquery1.Sort:='年龄 ASC;
1: adoquery1.Sort:='年龄 DESC;
else
adoquery1.Sort:='';//重置
end;
end;