|
에러가 나는 원인은 "NUM"필드에 프라이머리 키가 설정되어 있기 때문입니다.
NUM 필드의 타입을 AutoIncrement 형식으로 설정해보세요.
공윤경 님이 쓰신 글 :
: bool __fastcall TFrmMain::CreateDB(TTable *LinkTable)
: {
:
: if(LinkTable->Exists)
: {
: ShowMessage("Exists");
: }
: else {
: LinkTable->FieldDefs->Clear();
:
: // テーブル内にフィールドを記述する
: TFieldDef *pNewDef = LinkTable->FieldDefs->AddFieldDef();
: pNewDef->Name = "NUM";
: pNewDef->DataType = ftInteger;
: pNewDef->Required = true;
:
: pNewDef = LinkTable->FieldDefs->AddFieldDef();
: pNewDef->Name = "ROOT_ID";
: pNewDef->DataType = ftString;
: pNewDef->Size = 30;
:
: pNewDef = LinkTable->FieldDefs->AddFieldDef();
: pNewDef->Name = "LINK_ID";
: pNewDef->DataType = ftString;
: pNewDef->Size = 30;
: // インデックスを記述する
: LinkTable->IndexDefs->Clear();
: /* この場合,最初のインデックスは Paradox の一次キーであるため,名前は付いていない */
: LinkTable->IndexDefs->Add("","NUM", TIndexOptions() <<ixPrimary << ixUnique);
:
: // 必要な内容を指定したので,テーブルを作成する
:
: LinkTable->CreateTable();
: LinkTable->Close();
: }
: return true;
: }
: bool __fastcall TFrmMain::InsertDB(AnsiString ROOTID, AnsiString LINKID)
: {
: TTable *LinkTable = new TTable(FrmMain);
: LinkTable->DatabaseName = "STANDARD1";
: LinkTable->TableType = ttParadox;
: LinkTable->TableName = "test0718.db";
:
:
:
: if(LinkTable->Exists)
: {
: LinkTable->Active = false;
: LinkTable->Open();
: LinkTable->Append();
:
: LinkTable->FieldByName("ROOT_ID")->AsString = ROOTID;
: LinkTable->FieldByName("LINK_ID")->AsString = LINKID;
:
: LinkTable->Post();
: }
:
: return true;
: }
:
: NUM이 숫자를 입력받을때마다 자동으로 증가하는 값으로 만들려고 합니다.
: 위와같이 코딩했는데 계속해서 에러가 나네요..
|