Fórum Sequencia numérica de romaneio [MYSQL] #332673
05/11/2006
0
Passada a ressaca de feriado e eleições, cá estamos novamente...
Eu emperrei aqui numa ideologia simples, porém complexa (hehe)...
vou tentar ilustrar meu cenário:
15 caixas operando um sistema de vendas, todos acessando a mesma base simultaneamente... lindo, maravilha....
Minha duvida é a seguinte... como eu consigo gerar antecipadamente um numero de controle no caso da emissão de um romaneio ou um orçamento ?
digamos que a sequencia inicie em 1000
caixa 1 abre registro, sequencia 1000 atribuida.
caixa 2 abre registro, sequencia 1001 atribuida.
caixa 1 cancela processo, sequencia 1000 fica indisponivel.
caixa 2 fecha registro, sequencia 1001 utilizada.
caixa 3 abre registro, sequencia 1002 atribuida.
e a 1000 ? :?
existe alguma maneira de resolver isso ?
espero ter conseguido me expressar.
abraços !
Campsoft
Curtir tópico
+ 0Posts
06/11/2006
Uildenei
Uildenei
Gostei + 0
06/11/2006
Leonardoffsilva
Caixa 1 abre registro, sequencia 1000 atribuida.
caixa 2 abre registro, sequencia 1001 atribuida.
caixa 1 cancela processo, sequencia 1000 fica MARCADA COMO CANCELADA.
caixa 2 fecha registro, sequencia 1001 MARCADA COMO CONCLUIDA.
caixa 3 abre registro, sequencia 1002 atribuida.
- Dessa forma obtem-se controle sobre os processo concluidos e cancelados.
Gostei + 0
06/11/2006
Motta
esta fica locada até a conclusão do processo (usar transaction), ela só é atualizada ao fim do processo e qq outro que tente acessa-la fica aguardando a liberação do registro (o bd precisa suportar esta implementação)
O problema é gerar deadlocks se o nº de acesso simultaneos for grande e a transação demorada, mas é única forma que garante que não haverá ´banguelas´ .
Outra solução seria buscar a 1ª seq. disponível , mas creio ser mais complicada em geral não pode ser feita pois a sequencia deve crescer com o tempo.
Gostei + 0
06/11/2006
Campsoft
Da forma que voce mostrou, eu de qualquer maneira teria sequencias não utilizadas, e não canceladas.
Motta, este é meu medo, os malditos deadlocks... eu sinceramente não faço a minima ideia de como proceder.
...ainda quebrando a cuca e aguardando novas ideias....
Abraços !
Gostei + 0
07/11/2006
Campsoft
[url]http://www.clubedelphi.net/artigos/sequenciadorFB.asp[/url]
Pelo que entendi, ele trabalha com uma outra tabela onde faz
um ´catch´ e armazena todos os numeros descartados.
E no momento da atribuição da sequencia, ele dá uma olhada nesta base de descarte, se existir algum numero ele aproveita, se a base estiver vazia, retorna ao modo normal de incremento.
Eu estou tentando implementar isso por aqui, qualquer novidade eu posto.
Abraços.
Gostei + 0
07/11/2006
Campsoft
Gostei + 0
07/11/2006
Motta
Tem de ver se isto pode ser feito , às vezes há até retrições legais de usar um nº anterior.
Já fiz esta solução da tabela para nº sequencial é não tive maiores problemas, mas já vi um sistema que travava pois a transação que gravava o registro era demorada ,tornando o tempo de espera pela tabela um gargalo.
Gostei + 0
08/11/2006
Campsoft
Ele trabalha com duas sequencias em paralelo, sendo uma ´não-oficial´ que é exibida e utilizada como controle interno da loja, e outra OFICIAL, que será utilizada no momento de uma eventual impressão de nota fiscal.
Essa me parece uma ideia interessante...
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)