Создание таблицы с автоинкрементальным полем |
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