Q&A

  • (급급!!)Paradox DB의 Not Null조건을 코딩으로..
파라독스 DB에서 Create Table로 Not Null은 생성이 되지 않아요..

TTable을 이용하는 어떤 방법이 있다고도 들었는데요..



구체적으로 어떻게 해야 되나요..

오늘밤 안으로 꼭 필요한데요.. 안그러면 26개 테이블의

데이타를 옮기는 코딩이 정말 짜증날 것 같아요..



아시는 분 부탁드립니다.. 제가 감사의 메일을 꼭 드리죠..

그 어떤 것도(??)

1  COMMENTS
  • Profile
    이만준 1999.11.05 17:14
    안녕하세요....



    아래코드는 bde 도움말에 있는 예제입니다...

    이것을 이용하면..될 것같군요...



    그럼..



    Example 1: Add a validity check to the specified field.



    The field must be a longint, and the TTable must be open.

    This example uses the following input:



    fDbiDoRestructure(Table4, Table4.Fields[0], @Min, @Max, nil, True);



    (This input works for the EMPLOYEE.DB table.)



    procedure fDbiDoRestructure(Tbl: TTable; Field: TField; MinVal, MaxVal, DefVal: pLongint; Required: Boolean);

    var

    hDb: hDbiDb;

    TblDesc: CRTblDesc;

    VChk: pVChkDesc;

    Dir: string;

    NumVChks: Word;

    OpType: CROpType;

    begin

    NumVChks := 0;

    SetLength(Dir, dbiMaxNameLen + 1);

    Check(DbiGetDirectory(Tbl.DBHandle, False, PChar(Dir)));

    SetLength(Dir, StrLen(PChar(Dir)));

    VChk := AllocMem(sizeof(VChkDesc));

    try

    FillChar(TblDesc, sizeof(CRTblDesc), #0);



    VChk.iFldNum := Field.Index + 1;

    Tbl.DisableControls;

    Tbl.Close;

    Check(DbiOpenDatabase(nil, nil, dbiReadWrite, dbiOpenExcl, nil, 0, nil, nil,

    hDb));

    Check(DbiSetDirectory(hDb, PChar(Dir)));

    with VChk^ do begin

    bRequired := Required;

    if (MinVal <> nil) then begin

    Inc(NumVChks);

    bHasMinVal := True;

    move(MinVal^, aMinVal, sizeof(MinVal^));



    end

    else

    bHasMinVal := False;

    if (MaxVal <> nil) then begin

    Inc(NumVChks);

    bHasMaxVal := True;

    move(MaxVal^, aMaxVal, sizeof(MaxVal^));

    end

    else

    bHasMaxVal := False;

    if (DefVal <> nil) then begin

    Inc(NumVChks);

    bHasDefVal := True;

    move(DefVal^, aDefVal, sizeof(DefVal^));

    end



    else

    bHasDefVal := False;

    end;

    TblDesc.iValChkCount := NumVChks;

    TblDesc.pVChkDesc := VChk;

    OpType := crADD;

    TblDesc.pecrValChkOp := @OpType;

    StrPCopy(TblDesc.szTblName, Tbl.TableName);

    StrCopy(TblDesc.szTblType, szParadox);

    Check(DbiDoRestructure(hDb, 1, @TblDesc, nil, nil, nil, False));

    finally

    Check(DbiCloseDatabase(hDb));

    FreeMem(VChk, sizeof(VChkDesc));



    Tbl.EnableControls;

    Tbl.Open;

    end;

    end;









    이은주 wrote:

    > 파라독스 DB에서 Create Table로 Not Null은 생성이 되지 않아요..

    > TTable을 이용하는 어떤 방법이 있다고도 들었는데요..

    >

    > 구체적으로 어떻게 해야 되나요..

    > 오늘밤 안으로 꼭 필요한데요.. 안그러면 26개 테이블의

    > 데이타를 옮기는 코딩이 정말 짜증날 것 같아요..

    >

    > 아시는 분 부탁드립니다.. 제가 감사의 메일을 꼭 드리죠..

    > 그 어떤 것도(??)