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

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Codigo novamente
Irenko
BELO HORIZONTE
MG - BRASIL
Postada em 12/03/2007 16:06 hs            
Pessoal, estou usando a função abaixo para gerar numeração automatica: o problema é se o campo "Doc" da tabela TB_Documento estiver vazio a rotina funciona bem ate o final do primeiro select. Agora, no segundo select pego o campo "Doc" da tabela TB_Documento e verefico se ha registros se tiver somo mais um no mesmo e é isso que não esta funcionando. Onde pode estar o erro?

Public P_N_INICIAL As Long
Public P_N_FINAL As Long
Public NovoCodigo As Long

Public Function NOVO_COD_DOCUMENTO() As Long
Dim rsParam As New Recordset
Dim rsParam2 As New Recordset
Dim Sql As String
    
Sql = "SELECT * FROM TB_Documento "
Set rsParam2 = Banco_LM.Execute(Sql)
Do Until rsParam2.EOF
          rsParam2.MoveNext
Loop
NovoCodigo = rsParam2.RecordCount
rsParam2.Close

If NovoCodigo = 0 Then
         ' se não houver nenhum registro vc vai usar o 1o numero
        
Sql = "SELECT * FROM TB_PARAM "
Set rsParam = Banco_LM.Execute(Sql)

'PEGA OS VALORES INICIAIS E FINAIS
P_N_INICIAL = rsParam("N_Inicial")
P_N_FINAL = rsParam("N_Final")
NovoCodigo = 0
If P_N_INICIAL > 0 Then
NovoCodigo = CLng(P_N_INICIAL)
rsParam.Close

Else
If NovoCodigo > 0 Then
Sql = "SELECT * FROM TB_Documento Order By Doc"
Set rsParam2 = Banco_LM.Execute(Sql)

Do Until rsParam2.EOF
           NovoCodigo = rsParam2("Doc")
           If NovoCodigo > 0 Then
           NovoCodigo = NovoCodigo + 1
  
           End If
    
Loop
rsParam2.Close

End If
End If
End If
End Function

Private Sub CommandButton4_Click()
AtivarBancoLM
Dim tmpCodigo As Long
tmpCodigo = NOVO_COD_DOCUMENTO
TxtNumero.text = NovoCodigo
End Sub
     
Cardoso G
Pontos: 2843 Pontos: 2843
PATOS DE MINAS
MG - BRASIL
Postada em 12/03/2007 16:58 hs            
irenko, assim é bem mais simples.
"select max(codigo) as cod from tabela"
if isnull(rs!cod) then
   vCodigo=1
else
   vCodigo=rs!cod + 1
endif
     
Irenko
BELO HORIZONTE
MG - BRASIL
Postada em 12/03/2007 17:04 hs            
Alterei conforme sua sugestão, mas esta retornando 1 ao inves de 254552

Public Function NOVO_COD_DOCUMENTO() As Long
Dim rsParam As New Recordset
Dim rsParam2 As New Recordset
Dim Sql As String
    
Sql = "SELECT * FROM TB_Documento "
Set rsParam2 = Banco_LM.Execute(Sql)
Do Until rsParam2.EOF
          rsParam2.MoveNext
Loop
NovoCodigo = rsParam2.RecordCount
rsParam2.Close

If NovoCodigo = 0 Then
         ' se não houver nenhum registro vc vai usar o 1o numero
        
Sql = "SELECT * FROM TB_PARAM "
Set rsParam = Banco_LM.Execute(Sql)

'PEGA OS VALORES INICIAIS E FINAIS
P_N_INICIAL = rsParam("N_Inicial")
P_N_FINAL = rsParam("N_Final")
NovoCodigo = 0
If P_N_INICIAL > 0 Then
NovoCodigo = CLng(P_N_INICIAL)
rsParam.Close

Else

Sql = "SELECT Max(Doc) FROM TB_Documento Order By Doc"
Set rsParam2 = Banco_LM.Execute(Sql)

If IsNull(rsParam2!Doc) Then
   NovoCodigo = 1
Else
   NovoCodigo = rsParam2!Doc + 1
End If

rsParam2.Close

End If
End If

End Function
     
Vilmar Brazão
Pontos: 2843
SAO PAULO
SP - BRASIL
Postada em 12/03/2007 17:52 hs         
então tenta assim:

if isnull(val(rs!cod)) then
   vCodigo=1
else
   vCodigo=rs!cod + 1
endif
 
OU

if val(rs!cod) = 0 then
   vCodigo=1
else
   vCodigo=rs!cod + 1
endif

http://www.vilmarbro.com.br
     
PH1959
Pontos: 2843
SÃO JOSÉ DOS CAMPOS
SP - BRASIL
Postada em 12/03/2007 17:59 hs            
para não entrar o 1 no primeiro código, ...
 
"select max(codigo) as cod from tabela"
if isnull(rs!cod) then
   vCodigo=254552    '(ACHO QUE É DE ONDE VC QUER COMEÇAR A CONTAR NÉ?)
else
   vCodigo=rs!cod + 1
endif
     
Irenko
BELO HORIZONTE
MG - BRASIL
Postada em 12/03/2007 18:25 hs            
Gente, eu estou completamente perdido não estou conseguindo acertar esse codigo. Vou tentar explicar o que quero fazer:

Eu tenho um talão com a numeração de 254551 a 254600 totalizando 100 numeros, quero usa-los para numerar um relatório, eu teria que lançar esse numeros em uma tabela como Inicial e Final e buscando um a um ate o final. Na tabela TB_PARAM gravei:

Campo Inicial = 254551
Campo Final = 254600

Na tabela TB_Documento sera onde vou gravar esse numero no Campo DOC esse campo esta vazio. Primeiro tenho que verificar o campo DOC da tabela TB_Documento se existe registro, se não existir gravo o primeiro da tabela TB_PARAM  no caso 254551 dai por diante quando for gravar um novo registro pego o valor do campo DOC tabela TB_Documento e somo mais um ate o final 254600 onde aviso que tenho que lançar mais um bloco de 100 numeros. É isso mas não estou conseguindo codificar. Alguem pode me ajudar?
     
Página(s): 1/2      PRÓXIMA »

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