USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Numerar
mferreiraneto
LAGOA SANTA
MG - BRASIL
ENUNCIADA !
Postada em 10/04/2007 14:32 hs            
Boa tarde pessoal!!!

Desenvolvi um sistema que faz vendas de passagem de táxi, neste sistema quando gero uma nova venda é criado um novo código aleatório conforme rotina abaixo. Porém preciso transferir os dados da tabela de vendas todo final de expediente para uma outra tabela no escritório. Porém quando faço novas vendas e atualizo o escritório novamente acustuma da duplicidade de códigos.  Então criei uma tabela no BD (TblParametro) que grava sempre o ultimo código gerado. Agora preciso de uma rotina que lê este ultimo código nesta tabela e gera um novo baseado na rotina abaixo:

Function AutoID()
Randomize
txtVoucher.Text = Round(Rnd() * 79999) & Round(Rnd() * 25) + 65 + 3
End Function

ou seja, pegar o ultimo codigo e randomizar de acordo com a função acima

Grato.

VB 6.o
Marcelino

EmoçõesMFerreira...
   
ghost_jlp
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
SÃO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 10/04/2007 16:55 hs            
Hummm Emoções...
O problema está no código aleatório sem uma ordem... para não ocorrer duplicidade vc teria que verificar se o código já existe...
Imagine uma situação assim:
 
codigo aleatório gerado: 1B2
código gravado na tblparametro: 1B2
 
codigo aleatório gerado: 2A8
código gravado na tblparametro: 2A8
 
Numa outra oportunidade pode ser q o primeiro código acima seja gerado novamente:
codigo aleatório gerado: 1B2
código gravado na tblparametro: 1B2
 
Só que imagine q o último registro gravado na tabela seja o 2A8 então ele vai duplicar de novo o código 1B2.
 
Fazer repetidas consultas p/ validar o código torna o processamento pesado.
 
Se vc colocar um código seqüencial este problema não vai ocorrer. Vc tb utiliza a tblparametro para não haver concorrência e evitar 2 usuários (ou +) gravar o mesmo código. Grave sempre o último registro na tabela, consulte e some +1 grave os dados e já grava na tabela tbl parâmetro.
 
Para consultar: RS.Open "SELECT campo FROM tblparametro", ConexaoADO
 
NOVOCODIGO = RS(0)+1
'Rotina para gravar o último registro na tblparametros
'Rotina para gravar os dados
 
   
Álvaro
Pontos: 2843
GUARULHOS
SP - BRASIL
ENUNCIADA !
Postada em 11/04/2007 09:23 hs            
Esse é o problema do código aleatório, se você não verificar se o código gerado já existe, isso sempre irá acontecer. O que você pode fazer é a todo código gerado fazer uma consulta para ver se ele já existe, porém se o seu banco for pequeno tudo bem, o sistema não ira demorar para gerar um outro código, caso o código gerado já exista.
Más como é um sistema de vendas, isso tende a crescer e vai chegar o tempo que o sistema ira começar a demorar para gerar esse código, agora um código sequencial isso não tem problema, basta você pegar o último código gerado e somar 1.
Tenho uns programas que rodam em rede, e quando o último número de cadastro em uma tabela a parte, e sempre que o usuário inicia um novo cadastro, eu guardo esse número, assim se outro usuário entrar no sistema e iniciar um novo cadastro ao mesmo tempo, não tenho o problema de duplicidade e com o código sequencial você tem uma certeza de quantos registros ou vendas você tem
O que você poderia fazer era substituir os seus códigos existentes, por um código sequencial e depois dar continuidade na contagem, acho que assim você teria menos dor de cabeça. Não sei qual a linguagem que você programa, ADO - DAO - SQL e você usa o DATA para se conectar com o banco, más se tiver alguma dúvida da rotina, coloca aqui e fala qual é a forma que você programa, que a gente consegue te ajudar

Abraço e que DEUS te abençõe, espero poder ter te ajudado
Eu sou o Senhor, o DEUS de vocês;
eu os seguro pela mão e lhes digo;
Não fiquem com medo, pois eu os ajudo
Isaias 41:13
   
Página(s): 1/1    

CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página