create paradox field got default, max. and min. value using code

rex_edit
rex_edit used Ask the Experts™
on
how to create paradox field got default, max. and min. value by using code?

i want to re-build a paradox database, but my paradox database got require field, default, min. max. value.
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Top Expert 2004
Commented:
since this was my comment there, i post here:

nothing is impossible :-)
(an older sample)

//Set a Valcheck, valcheck may not exist
procedure SetValCheck(Tbl: TTable; Field: TField; MinVal, MaxVal,
          DefVal: Pointer; MinSize,MaxSize,DefSize : Integer; Required: Bool);
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, MinSize);
     end
     else
       bHasMinVal := False;
     if MaxVal <> nil then

     begin
       Inc(NumVChks);
       bHasMaxVal := True;
       move(MaxVal^, aMaxVal, MaxSize);
     end
     else
       bHasMaxVal := False;
     if DefVal <> nil then
     begin
       Inc(NumVChks);
       bHasDefVal := True;
       move(DefVal^, aDefVal, DefSize);
     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;

//Help Function to encode bde-date
Function GetBDEDate(Month, Day : Word; Year : SmallInt; var MyDate : DbiDate) : DbiDate;
begin
 Check(DbiDateEncode(Month, Day, Year, MyDate));
 Result := Mydate;
end;


//Table must be opened exclusive,
//a validate check may not exist
procedure TForm1.Button2Click(Sender: TObject);
var
 cmin,cmax,cdef : Double;
 lmin,lmax,ldef : Longint;
 amin,amax,adef : String;
 bdef : Boolean;
 dmin,dmax,ddef : dbiDate;
begin
 //Set validate for numeric Field
 cmin := -2.5;
 cmax := 2.5;
 cdef := 0.01;
 SetValCheck(Table6,Table6.FieldByName('Numeric'),@cmin,@cmax,@cdef,
             SizeOf(cMin),SizeOf(cMax),SizeOf(cdef),True);

 //Set Validate for Integer Field
 lmin := -100;
 lmax := 100;
 ldef := 1;
 SetValCheck(Table6,Table6.FieldByName('Integer'),@lmin,@lmax,@ldef,
             SizeOf(lMin),SizeOf(lMax),SizeOf(ldef),True);

 //Set Validate for Alphanumeric Field
 amin := 'A';
 amax := 'ABCDE';
 adef := 'AB';
 SetValCheck(Table6,Table6.FieldByName('Alpha'),@amin[1],@amax[1],@adef[1],
             length(amin),length(aMax),length(adef),True);

 //Set Validate for Boolean Field (Default only)
 bdef := False;
 SetValCheck(Table6,Table6.FieldByName('Boolean'),Nil,nil,@bdef,
             0,0,SizeOf(bdef),True);

 //Set Validate for DateField
 dMin := GetBDEDate(1,1,1999,dmin);
 dMax := GetBDEDate(12,31,1999,dmax);
 dDef := GetBDEDate(7,1,1999,ddef);
 SetValCheck(Table6,Table6.FieldByName('Date'),@dmin,@dmax,@ddef,
             SizeOf(dMin),SizeOf(dMax),SizeOf(ddef),True);

end;


the bde-unit must be added to the uses clause to get it work

if this was, for what you are after,
roza deserves the points, of course


meikl ;-)

Author

Commented:
just for update a new table, what i want is check the table and re-create the table with index key and validy check.

so the answer is half only, but with this half-answer i found the way to the other half-answer^^.
Fundamentals of JavaScript

Learn the fundamentals of the popular programming language JavaScript so that you can explore the realm of web development.

Top Expert 2004

Commented:
>check the table and re-create the table with index key
i don't see this requirements in the question
Top Expert 2004

Commented:
roza,

i post a q for you, because you was first
-> 75 points a-grade

watch out

meikl ;-)
rex_edit

If the comment helped you to solve your problem, it was a perfect answer, that's why I upgraded to 'A'. If the comment didn't help, then you could always ask for a refund of your points.

** Mindphaser - Community Support Moderator **

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial