TRATAMENTO DE ERRO NO VB6

 Tópico anterior Próximo tópico Novo tópico

TRATAMENTO DE ERRO NO VB6

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#491653 - 02/12/2019 15:43:01

LEONARDOB
ARARAQUARA
Cadast. em:Dezembro/2019


Boa tarde.

Estou com o seguinte problema, alguém pode me ajudar?

Tenho uma sub onde quando dá um erro de violação de chave primária cai em uma Label de erro onde volta para uma Label no código onde gera um novo código e faz o fluxo de gravação novamente. Supondo que na minha tabela o ultimo registro é o 20 e eu estou tentando gravar o 15 que já existe, então dá um erro e volta e pega o código 16 e assim o fluxo segue até gravar. O problema é que esse tratamento de erro funciona apenas na primeira vez, no exemplo acima tinha que passar 5 vezes para gravar com o código 21. Na segunda vez que o erro estoura é jogado para o sub anterior a essa. Tem alguma forma de ficar um loop nesse tratamento de erro ate pegar o código correto?

OBS: Na tabela não usa auto incremento, e não tem como colocar na estrutura que o sistema foi concebido.



Resposta escolhida #491654 - 02/12/2019 16:12:57

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Uma solução simples, seria procurar o maior valor da coluna no momento, adicionar um e gravar.

_______________________________________________________________________
Virei Oráculo!
The end is nigh, be ready for the nukes!


#491655 - 02/12/2019 16:14:31

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
É uma query simples, tipo:

SELECT Max(SUA_COLUNA_AQUI) FROM SUA_TABELA


_______________________________________________________________________
Virei Oráculo!
The end is nigh, be ready for the nukes!


#491656 - 02/12/2019 16:44:27

LEONARDOB
ARARAQUARA
Cadast. em:Dezembro/2019


Já está pegando o máximo, mas pensa em um ambiente em que há gravações a todo momento, e na execução existe uma confirmação, onde para o código.



#491657 - 02/12/2019 17:38:54

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Então o seu problema é bem maior: concorrência. Aí a solução pode ser muito mais complexa. Uma das alternativas é usar campos autogerados, na maioria das vezes o tipo GUID é o mais aconselhável, já que a chance de duplicação é praticamente nula.

_______________________________________________________________________
Virei Oráculo!
The end is nigh, be ready for the nukes!


 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por LEONARDOB em 02/12/2019 17:39:53