GRAVANDO REGISTRO SIMULTANEIO
Caros amigos ! dúvida simples porém estou com dificuldades
Tenho um cadastro de clientes onde ao gravar eu uso um select para achar o último código cadastrado e criar um próximo. Acontece quando 2 usuário estão cadastrando ao mesmo tempo e pressionam gravar quase juntos acurra um erro. Tem algum comando que possa usar para previnir isso.
Tenho um cadastro de clientes onde ao gravar eu uso um select para achar o último código cadastrado e criar um próximo. Acontece quando 2 usuário estão cadastrando ao mesmo tempo e pressionam gravar quase juntos acurra um erro. Tem algum comando que possa usar para previnir isso.
na realidade o erro o ocorre porque os dois funcionarios sem querer acabam gerando o mesmo numero sequencial e um deles irá até salvar mas o que pressionou o botão depois tentará salvar o mesmo id.
para contornar este problema eu faço o seguinte
Abro a tela de cadastro gero o numero sequencial( como vc está fazendo mesmo) e já salvo com os demais dados em branco, e o numero mantenho na tela no meu campo ID, depois preencho todo o cadastro e ao invés de fazer o insert(que eu já fiz quando abri a telaeu faço um update baseado no numero que esta no meu campo ID.
em miudos
abre o formulário --> gera o numero sequencial---> salva no banco---> armazena o numero no campo dele mesmo --> e ao preencher o cadastro faz um update baseado no numero.
com o procedimento, será quase impossivel 2 funcionários abrirem ao mesmo minuto e segundo o mesmo id.
bom pra finalizar:
da maneira que vc esta fazendo, vc cria o numero sequencial porém este fica no programa, ou seja vc abre seu programa aqui e gera o numero 7e vai preenchendo os campos enquanto vc preenche um outro funcionario abre a tela de cadastro e gera um novo numero, e faz isso baseado no banco de dado, como vc ainda não preencheu seu cadastro todo e não salvou, no banco de dados ainda está o cadastro 6, então este outro funcionário terá também o numero 7,o que causa o erro, entendeu.
para contornar este problema eu faço o seguinte
Abro a tela de cadastro gero o numero sequencial( como vc está fazendo mesmo) e já salvo com os demais dados em branco, e o numero mantenho na tela no meu campo ID, depois preencho todo o cadastro e ao invés de fazer o insert(que eu já fiz quando abri a telaeu faço um update baseado no numero que esta no meu campo ID.
em miudos
abre o formulário --> gera o numero sequencial---> salva no banco---> armazena o numero no campo dele mesmo --> e ao preencher o cadastro faz um update baseado no numero.
com o procedimento, será quase impossivel 2 funcionários abrirem ao mesmo minuto e segundo o mesmo id.
bom pra finalizar:
da maneira que vc esta fazendo, vc cria o numero sequencial porém este fica no programa, ou seja vc abre seu programa aqui e gera o numero 7e vai preenchendo os campos enquanto vc preenche um outro funcionario abre a tela de cadastro e gera um novo numero, e faz isso baseado no banco de dado, como vc ainda não preencheu seu cadastro todo e não salvou, no banco de dados ainda está o cadastro 6, então este outro funcionário terá também o numero 7,o que causa o erro, entendeu.
Ok entendi ....até pensei em fazer dessa forma , não já no próprio formulário mais sim em uma outra tabela criada para armazenar números sequenciais das tabelas. ou seja. crio uma tabela e lá campo códido do cliente..quando o usuário dá o incluir no cadastro eu ia pega esse número como ID e já colocar na tela e já somar + 1 ..caso outro usuário da incluir já pegaria um próximo número.
Dúvida: caso algum deles aborte a inclusão, o número que havia pegado fica perdido ???
usuário 1 clico em incluir (pego código 3 e somo + 1)
usuário 2 clico em incluir (pego código 4 e somo + 1)
caso usuário 1 aborte o código 3 ficará perdido já que o próximo usuário clicar irá pega o código 5
Dúvida: caso algum deles aborte a inclusão, o número que havia pegado fica perdido ???
usuário 1 clico em incluir (pego código 3 e somo + 1)
usuário 2 clico em incluir (pego código 4 e somo + 1)
caso usuário 1 aborte o código 3 ficará perdido já que o próximo usuário clicar irá pega o código 5
sim isso pode acontecer.
a segunda opção então será a mais segura
gere o numero sequencial somente na hora de salvar os registros, será melhor assim, não correrá riscos ao salvar
a segunda opção então será a mais segura
gere o numero sequencial somente na hora de salvar os registros, será melhor assim, não correrá riscos ao salvar
Tudo isso pode ser resolvido com auto-numeração. A não ser que essa sequência que vc cria tenha uma formatação bem especÃfica.
Tópico encerrado , respostas não são mais permitidas