Советы по Delphi

         

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


Допустим у вас имеется форма с кнопкой. Щелчок на кнопке с помощью 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.

[000463]



Содержание раздела