Erro com numeração de gerador

Firebird

24/10/2007

Eu coloco um gerador em um campo, pego o seu valor em uma variável e depois coloco em um ibtable, durante este ato o valor simplesmente muda sozinho, segue o código para ver se alguém consegue descobrir o erro, o que eu não consegui!
With IBTable do
Begin
...Try
......Append;
......With IBQuery do
......Begin
.........Close;
.........SQL.Clear;
.........SQL.Add(´Select gen_id(LAUDOS_NUMLAUDO_GEN, 1) from RDB$DATABASE´);
.........Open;
......End;
......SetLength(NumeroLaudo, Procedimentos);
......NumeroLaudo[Procedimentos] := IBQuery1.Fields[0].AsInteger;
......showmessage(´numerolaudo ´+Inttostr(numerolaudo[procedimentos])); [b:31b5ea260a]aqui a numeração do gerador está correta e vai aumentando a cada vez[/b:31b5ea260a]
......FieldByName(´NUMLAUDO´).AsInteger := NumeroLaudo[Procedimentos]; [b:31b5ea260a] aqui dá erro e a numeração do gerador muda[/b:31b5ea260a]
......showmessage(´numerolaudo1 ´+Inttostr(numerolaudo[procedimentos])); [b:31b5ea260a]aqui já aparece o gerador com uma nova numeração que sempre é 18[/b:31b5ea260a]
......Post; [b:31b5ea260a]aqui aparece o erro informando da violação de chave primária pois ele tentou jogar o número 18 no banco em vez do número gerado[/b:31b5ea260a]
...Except
......mostra mensagem de erro
...End;
End.


Edilcimar

Edilcimar

Curtidas 0

Respostas

Sremulador

Sremulador

24/10/2007

Amigo, acho que seria assim...

Select LAUDOS_NUMLAUDO_GEN from RDB$DATABASE



GOSTEI 0
Edilcimar

Edilcimar

24/10/2007

sremulador, eu uso daquela maneira em todos os procedimentos e funciona, ali mesmo ele funciona até a hora de substituir o campo na tabela, nesta hora ele muda para o valor 18 e dá erro (veja os showmessage)


GOSTEI 0
Edilcimar

Edilcimar

24/10/2007

problema resolvido, era índice matricial


GOSTEI 0
POSTAR