GERAR CODIGO EM TEMPO REAL

NILTON.VIANNA 13/11/2010 19:45:47
#357400
Pois bem, ao fazer o cadastro de clientes no balçao, no ato do castastro
a varios terminais no mesmo Formulário, pois bem conforme a demora no cadastro o outo terminar ja vair estar com o codigo
gerado conforme cmdNovo +1 na tabela Clientes

Essa é a melhor maneira de gerar o código em tempo real
usar um Timer para fazer um (Refresh) na tabela pra pegar o ultimo que foi cadastrado.

Ex: do Timer
If (RS.RecordCount = 0) Then
txtPacienteID = 1
Else
RS.MoveLast
txtClienteID.Text = RS.Fields([Ô]ClienteID[Ô]) + 1
txtClienteID = Format(ClienteID.Text, 0)
End If
RS.Close

Grato
Nilton
MARCELO.TREZE 13/11/2010 19:58:00
#357401
sabe minha dica é a seguinte ao se abrir o form de cadastro já cadastrar o codigo (ultimo + 1).

ou seja quando salvar o cadastro preenchido ao inves de dar um insert into vc faz um update

assim por mais preciso que todos sejam sempre os códigos serão diferentes.

ex:

vc abre o form e dá um [txt-color=#0000f0](insert into)[/txt-color]

assim se outro abrir segundos depois de vc o codigo será outro.

vc pode manter o form aberto o tempo que for, depois quando acabar de digitar, basta fazer um [txt-color=#0000f0]update[/txt-color]. naquele código e pronto.


vantagem: vc não precisa usar um timer.

desvantagem: se vc cancelar o cadastro, aquele numero ficará vago ( mas nada que não possa ser resolvido com alguma função)

ALTAFIN 13/11/2010 19:59:36
#357403
Ao invés de ficar usando Timer para pegar o último código, deixe paga pegar o código apenas na hora que for efetuar a gravação. Isso evita ficar acessando o banco de dados diversas vezes sem necessidade (se tiver 10 terminais e esses ficarem acessando o banco a cada x segundo deixará o trafego na rede lento). E o que garante que o terminal ira gravar o registro exatamente após uma atualização do Timer ? E se você for gravar e ainda não foi atualizado o último código livre ?
Nos meus sistemas eu deixo para pegar o último código livre no momento que vou fazer a gravação e após a gravação feita eu informo qual código foi utilizado para a gravação.
Flw,
Marcelo
NILTON.VIANNA 13/11/2010 20:16:14
#357404
Problema é esse mesmo lentidão na rede, pois vai ficar fazendo loop cada um minuto
o jeito gerar mesmo na hora da gravação, a idéia é ja fornecer no ato o número ao cliente
para liberá-lo ao atendimento, sem ter que ficar esperqando o término do cadastro...

LLAIA 14/11/2010 00:44:12
#357410
Pra essas coisas que os BDs tem autonumeradores, generators e etc. Esqueçam esse negócio de número vago. Um sistema em rede a integridade referencial vem em primeiro lugar.
RICARDO.RAPA 15/11/2010 01:37:11
#357463
Cara você está cometendo um erro bastante grave como nosso amigo LLAIA falou de integridade, as vezes você querer ficar remendando um sistema demais e ficar buscando praticidade demais para o usuário pode ocasionar um problema maior no futuro se não tiver bem implementado.
RODRIGOFERRO 15/11/2010 09:46:13
#357465
o que voce pode fazer pra liberar o cliente antes de terminar o cadastro seria, ao invez de gerar o Ultimo +1, voce poderia criar um campo separado, que poderá gerar um Numero aleatorio Ex 25ABX2 entao na hora de inserir voce deixa o ID automatico que ai nao tem erro..

Obrigado
Tópico encerrado , respostas não são mais permitidas