Создание таблицы с автоинкрементальным полем

Previous  Top  Next

    
 

 

 

Допустим у вас имеется форма с кнопкой. Щелчок на кнопке с помощью DbiCreateTable должен создать таблицу Paradox с автоинкрементальным (приращиваемым) полем.

Code:

unit Autoinc;

 

interface

 

uses

SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,

Forms, Dialogs, DBTables, DB, ExtCtrls, DBCtrls, Grids, DBGrids, StdCtrls,

DbiTypes, DbiErrs, DBIProcs;

 

const

szTblName = 'CR8PXTBL'; { Имя создаваемой таблицы. }

szTblType = szPARADOX; { Используемый тип таблицы. }

 

{ При создании таблицы используется полное описание поля }

const

fldDes: array[0..1] of FLDDesc = (

   ({ Поле 1 - AUTOINC }

   iFldNum: 1; { Номер поля }

   szName: 'AUTOINC'; { Имя поля }

   iFldType: fldINT32; { Тип поля }

   iSubType: fldstAUTOINC; { Подтип поля }

   iUnits1: 0; { Размер поля }

   iUnits2: 0; { Десятичный порядок следования ( 0 ) }

   iOffset: 0; { Смещение в записи     ( 0 ) }

   iLen: 0; { Длина в байтах        ( 0 ) }

   iNullOffset: 0; { Для Null-битов        ( 0 ) }

   efldvVchk: fldvNOCHECKS; { Проверка корректности ( 0 ) }

   efldrRights: fldrREADWRITE { Права }

   ),

   ({ Поле 2 - ALPHA }

   iFldNum: 2; szName: 'ALPHA';

   iFldType: fldZSTRING; iSubType: fldUNKNOWN;

   iUnits1: 10; iUnits2: 0;

   iOffset: 0; iLen: 0;

   iNullOffset: 0; efldvVchk: fldvNOCHECKS;

   efldrRights: fldrREADWRITE

   ));

 

type

TForm1 = class(TForm)

   Button1: TButton;

   Database1: TDatabase;

   procedure Button1Click(Sender: TObject);

private

   { Private declarations }

public

   { Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

 

{$R *.DFM}

 

procedure TForm1.Button1Click(Sender: TObject);

var

TblDesc: CRTblDesc;

uNumFields: Integer;

Rslt: DbiResult;

ErrorString: array[0..dbiMaxMsgLen] of Char;

begin

FillChar(TblDesc, sizeof(CRTblDesc), #0);

lStrCpy(TblDesc.szTblName, szTblName);

lStrCpy(TblDesc.szTblType, szTblType);

uNumFields := trunc(sizeof(fldDes) / sizeof(fldDes[0]));

TblDesc.iFldCount := uNumFields;

TblDesc.pfldDesc := @fldDes;

 

Rslt := DbiCreateTable(Database1.Handle, TRUE, TblDesc);

if Rslt <> dbiErr_None then

begin

   DbiGetErrorString(Rslt, ErrorString);

   MessageDlg(StrPas(ErrorString), mtWarning, [mbOk], 0);

end;

end;

 

end.

 

 

 

©Drkb::02952

       

Взято с http://delphiworld.narod.ru