Compactando Tabelas Paradox
Olá pessoal,
Tenho a função abaixo q coloquei em meu DataMódule e gostraria de saber como a utilizo para fazer a compactação de minhas tabelas no momento em q algum registro é excluído:
Grato,
Ilano.
Tenho a função abaixo q coloquei em meu DataMódule e gostraria de saber como a utilizo para fazer a compactação de minhas tabelas no momento em q algum registro é excluído:
[color=red:aa19e90115]
procedure ParadoxPack(Table : TTable);
var
TBDesc : CRTblDesc;
hDb: hDbiDb;
TablePath: array[0..dbiMaxPathLen] of char;
begin
FillChar(TBDesc,Sizeof(TBDesc),0);
with TBDesc do begin
StrPCopy(szTblName,Table.TableName);
StrPCopy(szTblType,szParadox);
bPack := True;
end;
hDb := nil;
Check(DbiGetDirectory(Table.DBHandle, True, TablePath));
Table.Close;
Check(DbiOpenDatabase(nil, ´STANDARD´, dbiReadWrite, dbiOpenExcl,nil,0, nil, nil, hDb));
Check(DbiSetDirectory(hDb, TablePath));
Check(DBIDoRestructure(hDb,1,@TBDesc,nil,nil,nil,False));
Table.Open;
end;
[/color:aa19e90115]
Grato,
Ilano.
Ilanocf
Curtidas 0
Respostas
Danilorsa
25/02/2004
no click de um botão, por exemplo:::
DataModule.ParadoxPack(TB_Clientes);
DataModule.ParadoxPack(TB_Clientes);
GOSTEI 0
Ilanocf
25/02/2004
Danilo,
Não está dando certo fazer como vc indicou, q seria, em minha aplicação, assim: [b:6f56e9da49]DMDados.ParadoxPack(TBSituacao);[/b:6f56e9da49], pois está dandos os seguintes erros:
Então, tentei colocar o código assim [b:6f56e9da49]ParadoxPack(TBSituacao);[/b:6f56e9da49] no evento [b:6f56e9da49]BeforeDelete[/b:6f56e9da49] da própria Table [b:6f56e9da49]TBSituacao[/b:6f56e9da49], mas tb não deu certo, está dando o seguinte erro:
O q devo fazer agora?
Grato,
Ilano.
Não está dando certo fazer como vc indicou, q seria, em minha aplicação, assim: [b:6f56e9da49]DMDados.ParadoxPack(TBSituacao);[/b:6f56e9da49], pois está dandos os seguintes erros:
[Error] UFMCadSituacao.pas(200): Undeclared identifier: ´ParadoxPack´
[Error] UFrmCadSituacao.pas(200): Undeclered identifier: ´TBSituacao´
[Fatal Error] Academico.dpr(12): Could not compile used unit ´UFrmCadSituacao.pas´
Então, tentei colocar o código assim [b:6f56e9da49]ParadoxPack(TBSituacao);[/b:6f56e9da49] no evento [b:6f56e9da49]BeforeDelete[/b:6f56e9da49] da própria Table [b:6f56e9da49]TBSituacao[/b:6f56e9da49], mas tb não deu certo, está dando o seguinte erro:
[b:6f56e9da49]
Table is busy
Table: C:\ACADEMICO\DADOS\TB_SITUACAO.DB
User: ilano
[/b:6f56e9da49]
O q devo fazer agora?
Grato,
Ilano.
GOSTEI 0
Aroldo Zanela
25/02/2004
Colega,
Inclua a unit BDE na lista de uses.
Inclua a unit BDE na lista de uses.
GOSTEI 0
Aroldo Zanela
25/02/2004
Colega,
Agora que entendi, basta incluir o nome da unit que contém a função acima na lista de uses e não a BDE.
Agora que entendi, basta incluir o nome da unit que contém a função acima na lista de uses e não a BDE.
GOSTEI 0
Ilanocf
25/02/2004
:?: :?:
Desculpe a ignorância, mas como eu apenas copiei o código, qual unit ? é a [b:1ba4a572e3]UFrmCadSituacao[/b:1ba4a572e3] ? No uses do DataModule? Se for isso já fiz mas não adiantou!
Agora que entendi, basta incluir o nome da unit que contém a função acima na lista de uses e não a BDE.
Desculpe a ignorância, mas como eu apenas copiei o código, qual unit ? é a [b:1ba4a572e3]UFrmCadSituacao[/b:1ba4a572e3] ? No uses do DataModule? Se for isso já fiz mas não adiantou!
GOSTEI 0
Ilanocf
25/02/2004
:shock:
GOSTEI 0