[firebase-br] RES: Invalid Cursor

Sérgio Alexandre Gianezini sergio_ag em terra.com.br
Dom Ago 30 19:10:15 -03 2009


"Luis" <luisfirevb em gmail.com> escreveu na 
mensagem news:002301ca298d$301f36c0$905da440$@com...
Sérgio mas quando não pode haver quebra seqüencial na numeração, não digo na
ID da tabela, mas no código seqüencial de um tipo de registro que deve ser
sempre 1,2,3,4 etc... e se abordar uma inclusão, não se perca esse número
como acontece no gererator?

O único caso desse, que já vi acontecer, é em relação ao NSU catarinense, 
nesse caso, a tabela é preenchida ANTES com um range de números, e quando 
ela está chegando no limite, é re-preenchida com mais um range...
Acho extremamente dificil ter uma necessidade de numeros que não pode 
quebrar ordem, tenho mais de 12 anos trabalhando com software comercial, em 
áreas diversas, e só vi o caso do NSU mesmo... que já tem solução, 
diga-se...

Max() não funciona corretamente se a tabela recebe inclusões por mais de um 
usuário, vai dar chave duplicada mais cedo ou mais tarde... mas pode tentar 
via forceps, pega max, tenta salvar, se deu erro, pega max, tenta salvar...

Pseudo codigo pascal:

Repeat
  FlagOK := True;
  TabDado.Edit;
  TabDadoCHAVE.AsInteger = PegaMax('Tabela','Chave') + 1;
  TabDado.Post;
  Try
    TabDado.ApplyUpdate;
   Except
     FlagOK := False; // Verificar a mensagem, se é chave duplicada...
  End;
Until FlagOK; 







Mais detalhes sobre a lista de discussão lista