Table - obtendo extrutura

Top  Previous  Next

Obter a estrutura dos campos de um DB:

**************************************

 

procedure GetTableStruct(dbName, tblName : String; const FldList : TStrings);

 

  const FieldTypeNames: array[ftUnknown..ftTypedBinary] of string =

      ('Unknown''String''Smallint''Integer',

      'Word''Boolean''Float''Currency',

      'BCD''Date''Time''DateTime''Bytes',

      'VarBytes''AutoInc''Blob''Memo''Graphic',

      'FmtMemo''ParadoxOle''DBaseOle''TypedBinary');

 

var

  I, Idx: Integer;

  FldDef: String;

  Tbl   : TTable;

begin

 

  {Initialize vars}

  FldDef := '';

  Tbl := TTable.Create(Application);

 

  {Now search through the field defs.}

  with tbl do begin

    Active        := False;

    DatabaseName  := dbName;

    TableName     := tblName;

    Open;

    for I := 0 to FieldCount - 1 do begin

 {Get the properties we want to use for the listing}

      FldDef := Fields[i].DisplayLabel + ' ' +

                FieldTypeNames[Fields[I].DataType] + ' ' +

                IntToStr(Fields[I].Size);

 

 {Now, get the Index definitions for the table to determine if a

       field is a primary key or not.}

      IndexDefs.Update;

      if Fields[I].IsIndexField then begin

        Idx := IndexDefs.Indexof(Fields[I].Name);

        if (Idx > -1) then

          if ixPrimary in IndexDefs[Idx].Options then

            FldDef := FldDef + ' *';

      end;

      FldList.Add(FldDef);

    end;

    Free;

  end;

end;

 

 

Exemplo:

********

 

  GetTableStruct('C:\PROFIT2\DADOS''CLIENTES.DB', Memo1.Lines);