Fórum AutoIcremento #132091
02/02/2003
0
Olá pessoal eu não tó sabendo com faço para zerar o campo do AutoIcremento quanto o usuario deletar todos os registros da tabela, parece ser facíl e se alguém poder me ajuda eu agradeço.
valeu !!!!!!!!!!!!!!
valeu !!!!!!!!!!!!!!
Anonymous
Curtir tópico
+ 0
Responder
Posts
02/02/2003
Anonymous
Por concidência, estava revendo a revista clubedelphi número 29 e achei essa função, escrita por Danilo, que pode zerar o campo autoincremento:
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 FileName é o nome da tabela com o caminho e Base o valor inicial para o contador de autoincremento.
Não testei. Abraços.
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 FileName é o nome da tabela com o caminho e Base o valor inicial para o contador de autoincremento.
Não testei. Abraços.
Responder
Gostei + 0
27/02/2003
Trampo
Deixei de usar. Agora uso um campo numerico para codigo (ArquivoID)
e faço assim no datamodule:
// substitua T_XXXX pelo nome de qualquer tabela que chama a rotina e devolve um codigo ID livre
procedure TDataModule1.T_CoordenadorNewRecord(DataSet: TDataSet);
begin
T_Coordenador[´CoordenadorID´]:= Uniques(T_Coordenador,
´CoordenadorID´, T_Coordenador.RecordCount);
end;
{ Acrescente [b:36bade989e]FORMS[/b:36bade989e] em use}
function TDataModule1.Uniques(Tbl: TTable; Fld: String; Value: Integer): Integer;
begin
with TTable.Create( Application ) do
try
DatabaseName := Tbl.DatabaseName;
TableName := Tbl.TableName;
Open;
repeat
Inc(Value)
until Lookup(Fld, Value, Fld) = Null;
Result := Value
finally
Free
end
end;
e faço assim no datamodule:
// substitua T_XXXX pelo nome de qualquer tabela que chama a rotina e devolve um codigo ID livre
procedure TDataModule1.T_CoordenadorNewRecord(DataSet: TDataSet);
begin
T_Coordenador[´CoordenadorID´]:= Uniques(T_Coordenador,
´CoordenadorID´, T_Coordenador.RecordCount);
end;
{ Acrescente [b:36bade989e]FORMS[/b:36bade989e] em use}
function TDataModule1.Uniques(Tbl: TTable; Fld: String; Value: Integer): Integer;
begin
with TTable.Create( Application ) do
try
DatabaseName := Tbl.DatabaseName;
TableName := Tbl.TableName;
Open;
repeat
Inc(Value)
until Lookup(Fld, Value, Fld) = Null;
Result := Value
finally
Free
end
end;
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)