Q&A

  • 파라독스 테이블을 사용시 (오름차순,내림차순)
파라독스 테이블을 사용할때



테이블의 셋팅이 오름차순으로 되어있는데

내림차순으로 하는 방법을

알려 주시면 감사...



쿼리를 사용해서

order by 변수명 desc 로 할수는 있지만 조금

번거로와서

1  COMMENTS
  • Profile
    김영대 1999.10.01 02:34
    박회연 wrote:

    > 파라독스 테이블을 사용할때

    >

    > 테이블의 셋팅이 오름차순으로 되어있는데

    > 내림차순으로 하는 방법을

    > 알려 주시면 감사...

    >

    > 쿼리를 사용해서

    > order by 변수명 desc 로 할수는 있지만 조금

    > 번거로와서



    동적으로 인덱스를 만드시면 됩니다

    아래는 전에 올렸던 내용인데 참고해 보세요

    -----------------------------------------------------------------------



    아래 예제는 테스트한 예제입니다

    테스트는 DBDEMOS 로 했습니다



    동작은 DBGrid의 Title를 클릭하면 그 Title 의 필드로

    내림차순 sort를 합니다



    동작원리는 폼 생성시 그 테이블에 동적으로 index를 만드는 것입니다

    주의할것은 지정한 Table에 있는 모든 필드에 대해 각각 하나씩

    index가 생성되므로 table space를 낭비할 수 있으므로

    아래 소르를 보시고 특정 필드만 AddIndex하도록 고처서 사용하세요

    SQL-based 서버는 테스트 안해봐서 잘 될 지 모르겠습니다...





    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    Grids, DBGrids, Db, DBTables;



    type

    TForm1 = class(TForm)

    Table1: TTable;

    DataSource1: TDataSource;

    DBGrid1: TDBGrid;

    procedure FormCreate(Sender: TObject);

    procedure DBGrid1TitleClick(Column: TColumn);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;



    implementation

    {$R *.DFM}



    procedure TForm1.FormCreate(Sender: TObject);

    var

    i: Integer;

    begin

    Table1.Exclusive := True; // Paradox or dBASE table 인 경우만 해당

    Table1.Active := True;

    for i := 1 to DBGrid1.Columns.Count do

    begin

    try

    // table의 인덱스를 동적으로 만든다

    Table1.AddIndex(DBGrid1.Columns[i].FieldName, // index name

    DBGrid1.Columns[i].FieldName, // index field names

    [ixDescending]); // 내림차순 순서를 준다

    except // Blob 필드는 except 발생되어 인덱스생성 안됨

    ;

    end;

    end;



    Table1.Active := False;

    Table1.Exclusive := False;

    Table1.Active := True;

    end;



    procedure TForm1.DBGrid1TitleClick(Column: TColumn);

    begin

    Table1.IndexName := Column.FieldName;

    end;



    end.