点击DBGrid的Title对查询结果排序

北京麻子nice

北京麻子nice

2016-02-19 18:49

今天天气好晴朗处处好风光,好天气好开始,图老师又来和大家分享啦。下面给大家推荐点击DBGrid的Title对查询结果排序,希望大家看完后也有个好心情,快快行动吧!

  //欲实现点击DBGrid的Title对查询结果排序,想作一个通用程序,不是一事一议,
  //例如不能在SQL语句中增加Order by ...,因为SQL可能原来已经包含Order by ...,
  //而且点击另一个Title时又要另外排序,目的是想作到象资源管理器那样随心所欲。
  procedure TfrmChild.DBGrid1TitleClick(Column: TColumn);
  var
    SqlStr,myFieldName,TempStr: string;
    OrderPos: integer;
    SavedParams: TParams;
  begin
    if not (Column.Field.FieldKind in [fkData,fkLookup]) then exit;
    if Column.Field.FieldKind =fkData then
      myFieldName := UpperCase(Column.Field.FieldName)
    else
      myFieldName := UpperCase(Column.Field.KeyFields);
    while Pos(myFieldName,';')0 do
      myFieldName := copy(myFieldName,1,Pos(myFieldName,';')-1)
                    + ',' + copy(myFieldName,Pos(myFieldName,';')+1,100);
    with TQuery(TDBGrid(Column.Grid).DataSource.DataSet) do
    begin
      SqlStr := UpperCase(Sql.Text);
  //  if pos(myFieldName,SqlStr)=0 then exit;
      if ParamCount0 then
      begin
        SavedParams := TParams.Create;
        SavedParams.Assign(Params);
      end;
      OrderPos := pos('ORDER',SqlStr);
      if (OrderPos=0) or
        (pos(myFieldName,copy(SqlStr,OrderPos,100))=0) then
        TempStr := ' Order By ' + myFieldName + ' Asc'
      else if pos('ASC',SqlStr)=0 then
        TempStr := ' Order By ' + myFieldName + ' Asc'
      else
        TempStr := ' Order By ' + myFieldName + ' Desc';
      if OrderPos0 then SqlStr := Copy(SqlStr,1,OrderPos-1);
      SqlStr := SqlStr + TempStr;
      Active := False;
      Sql.Clear;
      Sql.Text := SqlStr;
      if ParamCount0 then
      begin
        Params.AssignValues(SavedParams);
        SavedParams.Free;
      end;
      Prepare;
      Open;
    end;

  

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

猜你喜欢

点击DBGrid的Title对查询结果排序

编程语言 网络编程
点击DBGrid的Title对查询结果排序

数据库查询结果的动态排序(2)

SQLServer
数据库查询结果的动态排序(2)

s8lol主宰符文怎么配

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

数据库查询结果的动态排序(4)

SQLServer
数据库查询结果的动态排序(4)

数据库查询结果的动态排序(1)

SQLServer
数据库查询结果的动态排序(1)

lol偷钱流符文搭配推荐

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

数据库查询结果的动态排序(6)

SQLServer
数据库查询结果的动态排序(6)

数据库查询结果的动态排序(5)

SQLServer
数据库查询结果的动态排序(5)

lolAD刺客新符文搭配推荐

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

创新源于理解 轻松打造自己的AJAX框架(2)

创新源于理解 轻松打造自己的AJAX框架(2)

防止全局hook入侵Delphi版2000以上系统适用(part2)

防止全局hook入侵Delphi版2000以上系统适用(part2)
下拉加载更多内容 ↓