给你个例子: var orderindex:Integer=0;//纪录上次排序的字段序号 orderstyle:sttring='Asc'://排序类型procedure Tfm_order.DBGrid1TitleClick(Column: TColumn); begin with qryOrder do begin Close; Sql.clear; if OrderIndex<>Column.Index then begin OrderStyle:='Asc'; OrderIndex:=Column.Index ; end else begin if OrderStyle='Asc' then OrderStyle:='Desc' else OrderStyle:='Asc'; end; sql.add('select * from ...'); Sql.add(where ....'); Sql.Add('Order by '+column.fieldname+' '+OrderStyle); PrePare; Open; end; end;
var
orderindex:Integer=0;//纪录上次排序的字段序号
orderstyle:sttring='Asc'://排序类型procedure Tfm_order.DBGrid1TitleClick(Column: TColumn);
begin
with qryOrder do
begin
Close;
Sql.clear;
if OrderIndex<>Column.Index then
begin
OrderStyle:='Asc';
OrderIndex:=Column.Index ;
end
else
begin
if OrderStyle='Asc' then
OrderStyle:='Desc'
else
OrderStyle:='Asc';
end;
sql.add('select * from ...');
Sql.add(where ....');
Sql.Add('Order by '+column.fieldname+' '+OrderStyle);
PrePare;
Open;
end;
end;
如果使用Query,就使用查询的ORDER BY子句。
如果使用ADO类,设置属性Sort=a001,a002......
如果是TTable,设置属性IndexFieldNames=a001,a002......
如果是TTQuery,设置SQL中的Order By a001,a002......—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”或者去掉';
I.Desire := '加不加分随你';
—————————————————————————————————
有简单的方法吗?
—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”或者去掉';
I.Desire := '加不加分随你';
—————————————————————————————————
我的程序是这样的,每个地区用一个英文字母表示,如a,b...
每个地区的人用001,002...等表示,最后显示所有纪录时先按英文字母排序,再按数字排序,请帮忙,一定给你加分!!!!!
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('select * from 数据源');\
adoquery1.sql.add('ordery by 字段名');//你指定排序字段名
adoquery1.prepare:=true;
adoquery1.open;dbgrid.datasource:=adoquery1;
这样就可以实现了