最好用sort procedure TFrmTYJLXZ.DBGrid1TitleClick(Column: TColumn); begin ADOQuery1.Sort:=Column.FieldName; end;
if adodataset1.Sort=DBGrid1.Columns[column.Index].FieldName+' DESC' then adodataset1.Sort :=DBGrid1.Columns[column.Index].FieldName+' ASC' else adodataset1.Sort :=DBGrid1.Columns[column.Index].FieldName+' DESC'
dbgrid通过datasource与query相关联
我找不到query控件的sort属性啊
procedure TFrmTYJLXZ.DBGrid1TitleClick(Column: TColumn); begin ADOQuery1.Sort:=Column.FieldName; end;
sort是TCustomADODataSet的属性,我用的是adoquery 如果是query可以这样 procedure TFrmTYJLXZ.DBGrid1TitleClick(Column: TColumn); begin .... Query1.sql.add('select * ... order by '''+Column.FieldName+''''); end;
楼上的老兄,用你的程序可以实现,不过有点小改动: Query1.sql.add('select * ... order by '+Column.FieldName+''); 但还有一个问题,这对于大多字段都适用,如'编号','出生日期'等等,都可以按顺序排列,但对于'2002年月平均工资'这一字段却出错,提示是这样的: project project1.exe raised exception class EDBengineerror with message 'token not found'. token:1998 line number:2'.Process stopped. ...
procedure TFrmTYJLXZ.DBGrid1TitleClick(Column: TColumn);
begin
ADOQuery1.Sort:=Column.FieldName;
end;
adodataset1.Sort :=DBGrid1.Columns[column.Index].FieldName+' ASC'
else
adodataset1.Sort :=DBGrid1.Columns[column.Index].FieldName+' DESC'
begin
ADOQuery1.Sort:=Column.FieldName;
end;
如果是query可以这样
procedure TFrmTYJLXZ.DBGrid1TitleClick(Column: TColumn);
begin
....
Query1.sql.add('select * ... order by '''+Column.FieldName+'''');
end;
Query1.sql.add('select * ... order by '+Column.FieldName+'');
但还有一个问题,这对于大多字段都适用,如'编号','出生日期'等等,都可以按顺序排列,但对于'2002年月平均工资'这一字段却出错,提示是这样的:
project project1.exe raised exception class EDBengineerror with message 'token not found'.
token:1998
line number:2'.Process stopped. ...
如果用avg可以试一试用字段别名
我的OICQ:12137759,验证信息:DELPHI