Board index » delphi » Generate new Indexes in Code for Paradox Tables

Generate new Indexes in Code for Paradox Tables

Hi,

how can i generate (rebuilt) Indexes for Paradox Tables in Code (or with a
Compoent if there exist one) ?

Thanks
Yavuz Bogazci

--
Yavuz Bogazci
The Ultimate MAPI Ressource on the Net for Delphi Programmers
http://www.mapidev.com

 

Re:Generate new Indexes in Code for Paradox Tables


if you want to add seconday indexes then

tbl.AddIndex(IndexName, IndexExp, []);

Got  this off of Borland web site.
to rebuild paradox index use

procedure TfrmCompare.PackTable(Table: TTable);
var
  Props: CURProps;
  hDb: hDBIDb;
  TableDesc: CRTblDesc;

begin
  // Make sure the table is open exclusively so we can get the db handle...
  if Table.Active = False then
    raise EDatabaseError.Create('Table must be opened to pack');
  if Table.Exclusive = False then
    raise EDatabaseError.Create('Table must be opened exclusively to pack');

  // Get the table properties to determine table type...
  Check(DbiGetCursorProps(Table.Handle, Props));

  // If the table is a Paradox table, you must call DbiDoRestructure...
  if Props.szTableType = szPARADOX then
  begin
    // Blank out the structure...
    FillChar(TableDesc, sizeof(TableDesc), 0);
    //  Get the database handle from the table's cursor handle...
    Check(DbiGetObjFromObj(hDBIObj(Table.Handle), objDATABASE,
hDBIObj(hDb)));
    // Put the table name in the table descriptor...
    StrPCopy(TableDesc.szTblName, Table.TableName);
    // Put the table type in the table descriptor...
    StrPCopy(TableDesc.szTblType, Props.szTableType);
    // Set the Pack option in the table descriptor to TRUE...
    TableDesc.bPack := True;
    // Close the table so the restructure can complete...
    Table.Close;
    // Call DbiDoRestructure...
    Check(DbiDoRestructure(hDb, 1, @TableDesc, nil, nil, nil, FALSE));
  end
  else
    // If the table is a dBASE table, simply call DbiPackTable...
    if Props.szTableType = szDBASE then
      Check(DbiPackTable(Table.DBHandle, Table.Handle, nil, szDBASE, TRUE))
    else
      // Pack only works on PAradox or dBASE; nothing else...
      raise EDatabaseError.Create('Table must be either of Paradox or dBASE
' +
               'type to pack');

  Table.Open;
end;

Quote

Re:Generate new Indexes in Code for Paradox Tables


Quote
>Yavuz Bogazci wrote:

>how can i generate (rebuilt) Indexes for Paradox Tables in Code (or >with a Compoent if there exist one) ?

A. TTable.AddIndex(). Two rules to observe:

* a primary index has no name
* the name of a case-sensitive secondary index (which is the default
when no Options are specified) has to match the name of the field being
indexed.

B. Using SQL:

  CREATE INDEX <indexname> ON <tablename> (<field1> [, field2 ..])

This way only secondary indices can be created.
________
Andreas
Delphi 5.01 Pro, NT4.0 Sp5
Direct replies mailto:p...@augsburg.netsurf.de

Re:Generate new Indexes in Code for Paradox Tables


See DbiRegenIndexes in the BDE API help file in your BDE directory.

--
Bill Todd (TeamB)
Please do not send questions via email.

Other Threads