PDA

Ver la Versión Completa : Configuracion DBE desde delphi


LordBits
27-05-2005, 00:19:08
Buenas,
como puedo hacer que desde mi aplicacion yo pueda cambiar los parametros del DBE que son el block size y level.
esto lo necesito para cuando mis tablas se creen estas se creen con el tamaño que yo les especifique..

muchas gracias

marcoszorrilla
27-05-2005, 07:08:48
Aquí tienes algunos ejemplos:

{Code sample to change Paradox table properties at run-time

Calling Syntax: }

SetParadoxTableVersion('c:\database\sometable.db', 5);

SetParadoxTableBlockSize('c:\database\sometable.db', 2048);

SetParadoxTableLanguage('c:\database\sometable.db', 'DBWINUS0');

SetParadoxTableStrictIntegrity('c:\database\sometable.db', True);


Un Saludo.

marcoszorrilla
27-05-2005, 07:14:01
Creo que hace falta esta Unit:




unit pdxtable;

interface

uses
DBTables, SYSUtils;

function SetParadoxTableVersion(TablePathName : String; Version : Integer) : Boolean;
function SetParadoxTableBlockSize(TablePathName : String; BlockSize : Integer) : Boolean;
function SetParadoxTableLanguage(TablePathName, LangDriver : String) : Boolean;
function SetParadoxTableStrictIntegrity(TablePathName : String; StrictIntegrity : Boolean) : Boolean;

implementation

uses
DB, BDE;

function RestructureParadoxTable(Table : TTable; Option, OptData: String) : Boolean;
var
hDb: hDBIDb;
Res : DBIResult;
TableDesc : CRTblDesc;
FieldDesc : FLDDesc;
begin
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;
end;

function SetParadoxTableVersion(TablePathName : String; Version : Integer) : Boolean;
var
MyTable : TTable;
begin
MyTable := TTable.Create(Nil);
MyTable.DatabaseName := ExtractFilePath(TablePathName);
MyTable.TableName := ExtractFileName(TablePathName);

Result := RestructureParadoxTable(MyTable, 'LEVEL', IntToStr(Version));

MyTable.Free;
end;

function SetParadoxTableBlockSize(TablePathName : String; BlockSize : Integer) : Boolean;
var
MyTable : TTable;
begin
MyTable := TTable.Create(Nil);
MyTable.DatabaseName := ExtractFilePath(TablePathName);
MyTable.TableName := ExtractFileName(TablePathName);

Result := RestructureParadoxTable(MyTable, 'BLOCK SIZE', IntToStr(BlockSize));

MyTable.Free;
end;

function SetParadoxTableStrictIntegrity(TablePathName : String; StrictIntegrity : Boolean) : Boolean;
var
MyTable : TTable;
begin
MyTable := TTable.Create(Nil);
MyTable.DatabaseName := ExtractFilePath(TablePathName);
MyTable.TableName := ExtractFileName(TablePathName);

If (StrictIntegrity) Then
Result := RestructureParadoxTable(MyTable, 'STRICTINTEGRTY', 'TRUE')
else
Result := RestructureParadoxTable(MyTable, 'STRICTINTEGRTY', 'FALSE');

MyTable.Free;
end;

function SetParadoxTableLanguage(TablePathName, LangDriver : String) : Boolean;
var
MyTable : TTable;
begin
MyTable := TTable.Create(Nil);
MyTable.DatabaseName := ExtractFilePath(TablePathName);
MyTable.TableName := ExtractFileName(TablePathName);

Result := RestructureParadoxTable(MyTable, 'LANGDRIVER', LangDriver);

MyTable.Free;
end;

end.


Un Saludo.

LordBits
27-05-2005, 16:36:16
muchas gracias marcoszorrilla de lujo esta ese ejemplo.

LordBits
27-05-2005, 16:46:23
El codigo que nos dio marcoszorrilla sirve para restructurar las tablas ya creadas. el link que pongo abajo es para cambiar la configuracion del idapi32.cfg desde delphi, util si necesitas cambiar algun parametro antes de crear las tablas...

http://info.borland.com/devsupport/bde/bdeapiex/dbiopencfginfolist.html

muy bueno..