1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
uses bde;
// appel de la fonction : on passe le langage de la table client en 'WEurope' ANSI
tableparadox_langdriver('c:\base\client.db', 'LANGDRIVER', 'dbwinwe0');
// fonction langdriver
function tableparadox_langdriver(chemintable_st : string; option, optdata : string) : boolean;
var table : TTable;
hdb : hDBIDb;
res : dbiresult;
tabledesc : CRTblDesc;
fielddesc : FLDDesc;
begin
{raffraichissement barre d'attente.}
Application.ProcessMessages;
{parametrage de la table}
table := TTable.Create(nil);
table.DatabaseName := ExtractFilePath(chemintable_st);
table.TableName := ExtractFileName(chemintable_st);
if (table.Active and not table.Exclusive) then table.Close;
if (not table.Exclusive) then table.Exclusive := true;
if (not table.Active) then table.Open;
Check(DbiGetObjFromObj(hdbiobj(table.Handle), objDATABASE, hdbiobj(hdb)));
table.Close;
FillChar(tabledesc, sizeof(tabledesc), 0);
StrPCopy(tabledesc.sztblname, table.TableName);
StrCopy(tabledesc.sztbltype, szPARADOX);
fielddesc.iOffset := 0;
fielddesc.iLen := length(optdata) + 1;
StrPCopy(fielddesc.szname, option);
tabledesc.iOptParams := 1;
tabledesc.pfldOptParams := @fielddesc;
tabledesc.pOptData := @optdata[1];
try
res := DbiDoRestructure(hdb, 1, @tabledesc, nil, nil, nil, false);
result := (res = DBIERR_NONE);
finally
table.Open;
end;
table.Free;
end; |
Partager