一个很实用的Ehlib排序函数适合ADO

我还在这里看贴

我还在这里看贴

2016-02-19 18:52

今天图老师小编给大家展示的是一个很实用的Ehlib排序函数适合ADO,精心挑选的内容希望大家多多支持、多多分享,喜欢就赶紧get哦!
 

  Ehlib3.0版本以上虽然支持排序功能,但不支持带有Order By的SQL语句,而且排序很慢;我写的这个排序函数,利用ADO的sort方法,排序很快,几万条数据也是很快。该函数支持Lookup字段排序,不支持计算字段排序,因为计算字段值在内存里高速运算。排序分为:升序、降序和默认三种,支持排序图标。
  

  procedure  SortDBGridEh(Sender: TObject; ACol: Integer;
    Column: TColumnEh);
  var
    FieldName, SortStr: string;
  begin
    Screen.Cursor := crSQLWait;
    try
      if (Sender is TDBGridEh) and
        ((Sender as TDBGridEh).DataSource.DataSet nil) then
      begin
        if not ((Sender as TDBGridEh).DataSource.DataSet is TCustomADODataSet) then
          Exit;

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

        if not (Sender as TDBGridEh).DataSource.DataSet.Active then
          Exit;

        FieldName := Column.FieldName;
        if (Sender as TDBGridEh).DataSource.DataSet.FindField(FieldName).IsBlob then
          Exit;

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

        if (Sender as TDBGridEh).DataSource.DataSet.FieldByName(FieldName).FieldKind =
          fkData then
          SortStr := FieldName
        else if (Sender as TDBGridEh).DataSource.DataSet.FieldByName(FieldName).FieldKind =
          fkLookup then
          FieldName := (Sender as TDBGridEh).DataSource.DataSet.FieldByName(FieldName).KeyFields
        else
          FieldName := '';

        if (FieldName = '') or (Pos(';', FieldName) 0) then
          Exit;
        case Column.Title.SortMarker of
          smNoneEh:
            begin
              Column.Title.SortMarker := smUpEh;
              TCustomADODataSet((Sender as TDBGridEh).DataSource.DataSet).Sort :=
                FieldName;

            end;
          smUpEh:
            begin
              Column.Title.SortMarker := smDownEh;
              TCustomADODataSet((Sender as TDBGridEh).DataSource.DataSet).Sort :=
                FieldName + ' DESC';
            end;
          smDownEh:
            begin
              Column.Title.SortMarker := smNoneEh;
              TCustomADODataSet((Sender as TDBGridEh).DataSource.DataSet).Sort := '';
            end;
        end;
      end;
    finally
      Screen.Cursor := crDefault;
    end;
  end;
  
  --程序实现如下:
  --在DBGridEh的事件OnTitleBtnClick引用该函数即可:
  procedure TFrmU_BasicSetup.dbgAddrCodeTitleBtnClick(Sender: TObject;
    ACol: Integer; Column: TColumnEh);
  begin
     SortDBGridEh(Sender, ACol, Column);
  end;
  --为了保证表格的每一列都能点击触发排序,你需要将你需要排序的列属性
  --  Title-TitleButton设置为True。

展开更多 50%)
分享

猜你喜欢

一个很实用的Ehlib排序函数适合ADO

编程语言 网络编程
一个很实用的Ehlib排序函数适合ADO

SQL2005一个不起眼但很实用的函数

编程语言 网络编程
SQL2005一个不起眼但很实用的函数

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

很实用的一个完整email发送程序

PHP
很实用的一个完整email发送程序

一个比较实用的asp函数集合类

ASP
一个比较实用的asp函数集合类

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

一个比较实用的asp函数集合类(1)

ASP
一个比较实用的asp函数集合类(1)

一个比较实用的asp函数集合类(2)

ASP
一个比较实用的asp函数集合类(2)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

XHTML网页教程

XHTML网页教程

如何调用chm格式的帮助文件

如何调用chm格式的帮助文件
下拉加载更多内容 ↓