当用语句:table1.IndexFieldNames := 'Zf';排序时,如何使其按降序排序?
zf是数值类字段名。

解决方案 »

  1.   

    用IndexDefs 来实现功能比较多
      

  2.   

    我的表已建好,并在Database Desktop设好了indexed field该如何办?
      

  3.   

    procedure TForm1.DBGrid1TitleClick(Column: TColumn);
    {$J+}
     const PreviousColumnIndex : integer = 0;
    {$J-}
    begin
      if DBGrid1.FieldCount = 0 then
         Exit;
      if DBGrid1.DataSource.DataSet is TCustomADODataSet then
         with TCustomADODataSet(DBGrid1.DataSource.DataSet) do
         begin
           try
             DBGrid1.Columns[PreviousColumnIndex].title.Font.Style :=
             DBGrid1.Columns[PreviousColumnIndex].title.Font.Style - [fsBold];
           except
           end;
           Column.title.Font.Style :=
           Column.title.Font.Style + [fsBold];
           PreviousColumnIndex := Column.Index;
           if (Pos(Column.Field.FieldName, Sort) = 1)
                and (Pos(' DESC', Sort)= 0) then
              Sort := Column.Field.FieldName + ' DESC'
           else
              Sort := Column.Field.FieldName + ' ASC';
         end;
    end;我用了一个放在DataModel中的ADOconnection,和放在主界面的ADOQuery和DataSource,当然还有DBGrid和DBNBavegitor。
      

  4.   

    ASC是升序排列
    DESC是降序排列
    注意:一定要大写。
      

  5.   

    我用的是PARADOX表,我知道 ASC 和 DESC可用于排序,请给一个例,有谁知道AddIndex该如何用?特别是   AddIndex('NameIndex','ID;Name',[]);中的ID(索引域?)该如何用?谢谢!
      

  6.   

    为什么以下语句要出错?
       with table1 do
       begin
       close;
       Exclusive := true;
       DatabaseName := 'd:\aa';
       TableName := 'a1.DB';
       Open;
       Table1.AddIndex( 'ByTTO','TTO',[ixDescending ]);//建立次索引
       close;                //可不使用,用了关闭table1
       end;
        table1.open;
     //   table1.IndexFieldNames := 'TTO';     //不可用
       table1.IndexFieldNames := 'Zf';       //可用
    以上zf字段是在Database Desktop中建立的索引所以可以使用,而TTO字段是用以上语句建立的索引使用时要出错:“table1:no index for fields 'TTO'”。但在用Database Desktop打开表A1.DB时可以看见次索引已添加成功。