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

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

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.


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

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...