|
파라독스DB를 사용하시는군요.
하도 오래되서 정확히 어떤 부분인지는 기억할 수 없으나..간단히 방법론만 설명드리겠습니다.
첫번째 방법으로는 Table에서 Field를 정의하는 부분에서 속성에 보시면 자동으로 카운트시켜주는 속성이 있는것으로 기억합니다.
원하는 Field에 카운트 속성을 주시면 Table에 Insert될때 DB에서 알아서 증가된 값을 적용합니다.
이 경우의 경우에는 마지막 레코드를 삭제후 새로운 레코드를 추가하였을때는 증가값이 순서적으로 증가하지 않고
전에 삭제되었던(마지막레코드의 경우입니다) 필드의 값에서 증가 시키게 됩니다. 참고 하시구요
두번째 방법은 개발하는 본인이 직접 원하는 Field의 값을 증가시켜서 저장하는 방법입니다.
이경우에는 본인이 ID값을 얻어오는 함수를 하나 만들어서 사용하시면 되겠죠.
함수에서는 저장하려는 Table의 마지막 레코드의 Field값을 읽어서 그 값에서 1을 증가하여 그값을 Return시켜주는
형태로 만드시면 될것입니다.
공윤경 님이 쓰신 글 :
: 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이 숫자를 입력받을때마다 자동으로 증가하는 값으로 만들려고 합니다.
: 위와같이 코딩했는데 계속해서 에러가 나네요..
|