Fórum AutoInc #148319

21/03/2003

0

Tenho uma tabela feita em Paradox, onde o campo Cod foi definido como autoinc, acontece que quando um registro é excluído, 3 por exemplo, outro novo cliente não poderá assumir aquele Código 3 disponível.

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

Anonymous

Responder

Posts

21/03/2003

Aroldo Zanela

Quanto trabalhamos com tabelas Paradox e apagamos o seus registros, o contador do campo AutoIncremento não é zerado, criando muitas vezes um grande inconveniente. Para resolver esse problema, use a seguinte função:

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


Responder

Gostei + 0

22/03/2003

Sandra

Olá, Luck!

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



Tenho uma tabela feita em Paradox, onde o campo Cod foi definido como autoinc, acontece que quando um registro é excluído, 3 por exemplo, outro novo cliente não poderá assumir aquele Código 3 disponível. Como posso fazer para corrigir esse tipo de problema? Antecipadamente agradeço. Aloísio Santos aloisiosantos@bol.com.br Fone:(74) 9979-6194 :roll:



Responder

Gostei + 0

22/03/2003

Marcelo

Tenho uma tabela feita em Paradox, onde o campo Cod foi definido como autoinc, acontece que quando um registro é excluído, 3 por exemplo, outro novo cliente não poderá assumir aquele Código 3 disponível. Como posso fazer para corrigir esse tipo de problema? Antecipadamente agradeço. Aloísio Santos aloisiosantos@bol.com.br Fone:(74) 9979-6194 :roll:


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+...


Responder

Gostei + 0

23/03/2003

Anonymous

Oi, Luck
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.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar