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
|
|
|
|
|
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
|
|
|
|
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
|
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?
|
|
|