Compactando Tabelas Paradox

Delphi

25/02/2004

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:
[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

Ilanocf

Curtidas 0

Respostas

Danilorsa

Danilorsa

25/02/2004

no click de um botão, por exemplo:::

DataModule.ParadoxPack(TB_Clientes);


GOSTEI 0
Ilanocf

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:

[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

Aroldo Zanela

25/02/2004

Colega,

Inclua a unit BDE na lista de uses.


GOSTEI 0
Aroldo Zanela

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.


GOSTEI 0
Ilanocf

Ilanocf

25/02/2004

:?: :?:

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

Ilanocf

25/02/2004

:shock:


GOSTEI 0
POSTAR