从表设置了MasterFields和IndexFieldNames,想改变从表的排序,请问该如何设置?

解决方案 »

  1.   

    procedure   TwZkjck.OnDbgrid1TitleClick(Column:   TColumn);   
      var   
          sName:string;   
          dtstLssjj:TClientDataset;   
          syxx:TIndexOptions;//索引选项   
      begin   
          if   Column.Grid=nil   then   exit;   
          if   Column.Grid.DataSource=nil   then   exit;   
          if   Column.Grid.DataSource.DataSet=nil   then   exit;   
        
          dtstLssjj:=TClientDataset(Column.Grid.DataSource.DataSet);   
          if   dtstLssjj.IndexDefs.Count>0   then   
          begin   
              sName:=dtstLssjj.IndexDefs[0].Name;   
              if   Pos(Column.Field.FullName,sName)>0   then   
              begin   
                  if   ixDescending   in   dtstLssjj.IndexDefs[0].Options   then   
                      syxx:=[ixCaseInsensitive]   
                  else   
                      syxx:=[ixDescending,ixCaseInsensitive];   
              end   
              else   
                  syxx:=[ixCaseInsensitive];   
          end   
          else   
              syxx:=[ixCaseInsensitive];   
        
          dtstLssjj.IndexDefs.Clear;   
          sName:=Column.Field.FullName+timetostr(now);   
          dtstLssjj.IndexDefs.Add(sName,Column.Field.FullName,syxx);   
          dtstLssjj.IndexName:=sName;   
      end;   
      

  2.   

    不是这个效果,是要数据集打开之后,要求从表自动按某一个字段的值排序,(非IndexFieldNames关联字段),在从表的commandtext中用order by 不起作用,从表和主表之间是用MasterFields和IndexFieldNames关联在一起的
      

  3.   

    MasterFields=Field1;Field2;Field3
    IndexFieldNames=Field1;Field2;Field3;Field4
    ---------------------------------------------
    以上情况从表将按照Field4升序排序如果需要按照Field4降序排序,那么就创建IndexDefs;设置新IndexDef的Fields为Field1;Field2;Field3;Field4,然后设置这个IndexDef的DescFields为Field4,最后选择IndexName为这个新创建的IndexDef;
      

  4.   

    一个clientdataset1.IndexFieldNames:='field1;field2';     搞定,给分。