如用TclientDataSet 或 ADO 都有办法,但现用BDE 的 Tquery ,如何实现?

解决方案 »

  1.   

    在申明中加上﹕
    uses EhLibBDE;
    如果沒有EhLibBDE.dcu ,在EHLIB目錄下可以找到EhLibBDE.pas,自已編譯一下吧。
      

  2.   

    procedure TDBGridDetailForm.DBGridEh1TitleClick(Column: TColumnEh);
    var
      s: String;
    begin
      inherited;
      if OldSortField = Column.FieldName then
        DescSort := not DescSort;
      if DescSort then
        s := 'DESC'
      else
        s := 'ASC';
      DoSort(Column.FieldName,s);
      OldSortField := Column.FieldName;
    end;procedure TTgDBQueryBaseForm.DoSort(OrderField, OrderType: String);
    var
      tmpstr,tmpSQL,OldSQL:string;
      tmppos:integer;
    begin
      if not QueryMain.Active then
        Exit;
      //编辑状态,此功能无效
      if QueryMain.State in [dsInsert,dsEdit] then
        Exit;  OldSQL := QueryMain.SQL.Text;
      tmpstr:= lowercase(OldSQL);
      tmppos:=pos('order',tmpstr);
      if tmppos<>0 then
        tmpstr:=copy(tmpstr,1,tmppos-1);
      tmpSQL:=tmpstr+' order by '+OrderField+' '+OrderType;  QueryMain.DisableControls;
      try
        OpenQuery(QueryMain,tmpSQL);
      except
        QueryMain.SQL.Text := OldSQL;
        QueryMain.Open;
        Raise Exception.Create('不能按此列排序!');
      end;
      QueryMain.EnableControls;
    end;
      

  3.   

    如果用query可能要借助临时表,把quety查询出的结果放到临时表中
      

  4.   

    TO bbs791109(小别) 
    我已 uses EhLibBDE.pas,并編譯执行,仍无反应,需要另外的设置吗?
      

  5.   

    TclientDataSet 是什么办法呢?