Fórum AutoInc #148319
21/03/2003
0
Como posso fazer para corrigir esse tipo de problema?
Antecipadamente agradeço.
Aloísio Santos
aloisiosantos@bol.com.br
Fone:(74) 9979-6194 :roll:
Anonymous
Curtir tópico
+ 0Posts
21/03/2003
Aroldo Zanela
function ResetAutoInc(FileName: TFileName; Base: Longint): Boolean;
begin
with TFileStream.Create(FileName, fmOpenReadWrite) do
begin
Result := (Seek($49, soFromBeginning) = $49) and (Write(Base, 4) = 4);
Free;
end;
end;
O parâmetro FileName é o nome da tabela, incluindo o caminho. E o parâmetro Base é o valor inicial para o contador do AutoIncremento. Veja um exemplo de uso:
procedure TForm1.Button1Click(Sender: TObject);
begin
ResetAutoInc(´C:\Temporario\Cliente.db´, 1);
end;
Pirateado de: http://www.elivaldo.com.br
Gostei + 0
22/03/2003
Sandra
:arrow: Ao invés de usar o + (autoincremento) automático, faça-o manualmente, usando SQl:
1-Mude o tipo do campo para I (integer).
2-No evento OnNewRecord da tabela, coloque:
procedure TDM.TB_ClienteNewRecord(DataSet: TDataSet); begin With Query1 Do Begin Close ; SQL.Text := ´Select Max(Cod_Cliente) from Cliente´ ; Open ; If Fields[0].isNull Then TB_Cliente.FieldByName(´Cod_Cliente´).asInteger := 1 ; Else TB_ClienteCod_Cliente.AsInteger := Fields[0].asInteger + 1 ; End ; end;
Fica mais fácil. :wink:
Gostei + 0
22/03/2003
Marcelo
Olha luci,,,
Isso, na verdade, nao eh um problema, e sim algo muito bom, que eu lhe recomendo nao tentar mudar, pois quando um CODIGO é excluido e subistituido um outro cadastro com a mesma referencia de CODIGO, voce estara sujeito a fazer com que o restante do programa que tem esse codigo como referencia, ser assumido pelo outro cadastro, que pode nao ter nada a ver com o outro cadastro!!! mas se vc deseja fazer isso,(que nao eh recomendavel) vc pode fazer assim:
Mude o campo da tabela para Alpha, e faca uma busca do ultimo cadastro e acrescente + 1, com esse codigo:
[b:ed3527de7a]ECodito.text:=IntToStr(Table1.RecordCount + 1);[/b:ed3527de7a]
e Coloque no evento ONEnter do ECodigo.Text esse:
[b:ed3527de7a]EDescricao.SetFocus;[/b:ed3527de7a]
Valeu?
at+...
Gostei + 0
23/03/2003
Anonymous
Vários colegas já resolveram sua dúvida. Ótimo.
Como informação adicional, uma vez que já passei por isso, lembro que os campos autoincremento apresentam uma vantagem adicional por não
repetirem números que são excluídos. Imagine uma empresa que tem um cadastro de clientes padrão, e um cadastro adicional dos mau pagadores.
Muito provavelmente o mau pagador será excluído do cadastro padrão bem rápido (prá quê ficar mandando mala direta se a compra anterior ele não pagou ?). No entanto, possivelmente a empresa vai querer mantê-lo no cadastro de mau pagador por mais tempo, inclusive para que ele venha a
fazer uma nova compra alguns meses depois.
Se assim que ele foi excluído do cadastro padrão o seu número de código foi utilizado para um novo cliente, este novo cliente estará com o mesmo código
do mau pagador... na primeira consulta que se fizer, o novo cliente será
taxado de mau pagador... Claro que há diversas formas de se evitar isso e com certeza você já adotou alguma delas. Espero ter sido útil. CarlosRM.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)