Procedure TFrmBaseChild.DBGridOrderby(aDBGrid:TDBGrid;Column: TColumn);   //排序
Var
  Indexname:String;
begin
  inherited;
  IF aDBGrid.DataSource.DataSet.IsEmpty Then
      Exit;
  IndexName:=aDBGrid.Columns[0].FieldName;
  aDBGrid.DataSource.DataSet.DisableControls ;
  IF   OrderBy=0   Then     //按升序排列
    Begin
    OrderBy:=1;
       IF TClientDataSet(aDBGrid.DataSource.DataSet).IndexName =IndexName Then
          TClientDataSet(aDBGrid.DataSource.DataSet).DeleteIndex(IndexName);
       TClientDataSet(aDBGrid.DataSource.DataSet).AddIndex(Indexname,column.FieldName,[],column.FieldName,'',0);
       TClientDataSet(aDBGrid.DataSource.DataSet).IndexName:=Indexname;
    End
  Else
    Begin
     OrderBy:=0;
      IF TClientDataSet(aDBGrid.DataSource.DataSet).IndexName =IndexName Then
        TClientDataSet(aDBGrid.DataSource.DataSet).DeleteIndex(IndexName);
        TClientDataSet(aDBGrid.DataSource.DataSet).AddIndex(IndexName,column.FieldName,[],'','',0);
        TClientDataSet(aDBGrid.DataSource.DataSet).IndexName:=IndexName;
    End;
  aDBGrid.DataSource.DataSet.EnableControls;
  aDBGrid.DataSource.DataSet.First ;
End;procedure TFrmInStocks.DBGrid1TitleClick(Column: TColumn);
begin
  inherited;
  DBGridOrderby(DBGrid1,Column);
end;
以上为我写的排序的代码,但是当点的是一个计算字段,(在ClientDataSet中的fkCalculated类型字段)时就会报错,找不到这个字段名,直接查询的字段就没有问题的!请高手帮忙看下,谢谢了