скрыть

скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Google  
 

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



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






Copyright © 2004-2016 "Delphi Sources". Delphi World FAQ




Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook