pack na tabela nao elimina..pk??
06/11/2005
0
eu ja dei um pack na tabela (paradox), mas a tabela nao eliminou todos os registos,porque o campo de auto incremento continua contando...e apos fazer um pack a tabela apaga por completo,so quando eu insiro um novo registo a o camnpo de auto incremento conta a partir do ultimo registo que fiz antes de dar um pack na tabela.
exemplo;
antes do pack:
o ultimo registo no campo incremento contem o valoir 10;
apos o pack:
quando insiro um novo registo, o campo auto incremento nao começa do 1 mas sim do 10;
Já usei o empty do database e tb tem o mesmo problema
obrigado!
exemplo;
antes do pack:
o ultimo registo no campo incremento contem o valoir 10;
apos o pack:
quando insiro um novo registo, o campo auto incremento nao começa do 1 mas sim do 10;
Já usei o empty do database e tb tem o mesmo problema
obrigado!
Cyberchip
Curtir tópico
+ 0
Responder
Posts
07/11/2005
Firekiller
Tente usar isso:
procedure ParadoxPack(Table : TTable);
var
TBDesc : CRTblDesc;
begin
FillChar(TBDesc,Sizeof(TBDesc),0);
with TBDesc do begin
StrPCopy(szTblName,Table.TableName);
StrPCopy(szTblType,szParadox);
bPack := True;
end;
Check(DBIDoRestructure(Table.DBHandle,1,@TBDesc,nil,nil,nil,False);
end;
Se não funcionar, tente isso:
function ResetAutoInc(FileName: TFileName; Base: Longint): Boolean;
begin
with TFileStream.Create(FileName, fmOpenReadWrite) do
Result := (Seek($49, soFromBeginning) = $49) and (Write(Base, 4) = 4);
end;
onde:
O parâmetro FileName é o nome da tabela, incluindo o caminho. E o parâmetro Base é o valor inicial para o contador do AutoIncremento.
Para a segunda opção, o banco não pode estar em uso.
procedure ParadoxPack(Table : TTable);
var
TBDesc : CRTblDesc;
begin
FillChar(TBDesc,Sizeof(TBDesc),0);
with TBDesc do begin
StrPCopy(szTblName,Table.TableName);
StrPCopy(szTblType,szParadox);
bPack := True;
end;
Check(DBIDoRestructure(Table.DBHandle,1,@TBDesc,nil,nil,nil,False);
end;
Se não funcionar, tente isso:
function ResetAutoInc(FileName: TFileName; Base: Longint): Boolean;
begin
with TFileStream.Create(FileName, fmOpenReadWrite) do
Result := (Seek($49, soFromBeginning) = $49) and (Write(Base, 4) = 4);
end;
onde:
O parâmetro FileName é o nome da tabela, incluindo o caminho. E o parâmetro Base é o valor inicial para o contador do AutoIncremento.
Para a segunda opção, o banco não pode estar em uso.
Responder
Clique aqui para fazer login e interagir na Comunidade :)