Советы по 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 thenbeginDbiGetErrorString(Rslt, ErrorString);MessageDlg(StrPas(ErrorString),mtWarning,[mbOk],0);end;
end;

end.

[000463]



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