MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


2 participantes

    [Resolvido]Numeração Personalizada no formulário

    avatar
    flecha
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 304
    Registrado : 11/01/2012

    nextNumAno - [Resolvido]Numeração Personalizada no formulário Empty Numeração Personalizada no formulário

    Mensagem  flecha 27/1/2013, 19:24

    Pessoal

    Me desculpem, mas olhei vários exemplos de numeração Personalizada mas não consegui resolver o meu problema.

    Uso essa função para numerar meu campo:

    Public Function NextNumAno() As String
    'Gera o próximo código da tabela de numeração/ano
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim intYear As Integer
    Dim strSql As String

    'Ano atual, conforme o sistema
    intYear = Year(Date)

    'Verifica o último código para o ano
    strSql = "SELECT CLng(Left$(NumAno, Len(NumAno)-5)) As Num, " & _
    "CInt(Right$(NumAno, 4)) As Ano FROM tab_Entrevista " & _
    "WHERE CInt(Right$(NumAno, 4))=" & CStr(intYear) & _
    " ORDER BY CLng(Left$(NumAno, Len(NumAno)-5)) DESC"
    Set db = CurrentDb()
    Set rst = db.OpenRecordset(strSql, dbOpenDynaset)
    With rst
    If .BOF And .EOF Then
    'NextNumAno = "1" & CStr(intYear) ' Tirei a Barra e coloquei ponto AGORA SEM PONTO.
    NextNumAno = "1." & CStr(intYear) ' Tirei a Barra e coloquei ponto
    Else
    .MoveFirst
    'NextNumAno = CStr(!Num + 1) & CStr(intYear) ' Tirei a Barra e coloquei ponto AGORA SEM PONTO.
    NextNumAno = CStr(!Num + 1) & "." & CStr(intYear) ' Tirei a Barra e coloquei ponto
    End If
    .Close
    End With
    Set rst = Nothing
    Set db = Nothing
    End Function

    O Campo que recebe o Número é Texto e fica assim 1.2013 10.2013 2.2013 etc....

    Tentei passar para Campo Numérico retirando o (.) ponto mas não obtive sucesso, parece que dava erro nessa
    linha:

    Set rst = db.OpenRecordset(strSql, dbOpenDynaset)

    Tinha problema para Ordenar o campo e agora resolvi pelo Forum com Val(NumAno).

    Gostaria de acrecentar Zeros a esquerda assim 0001.2013 e não consegui.

    Podem me auxiliar em colocar os Zeros ou passar para Númerico o Campo sem ponto 12013 22013 etc...

    Obrigado

    P.S
    O arquivo esta aqui.
    http://maximoaccess.forumeiros.com/t11450-subform-nao-abre-ao-clicar-em-incluir
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11026
    Registrado : 04/11/2009

    nextNumAno - [Resolvido]Numeração Personalizada no formulário Empty Re: [Resolvido]Numeração Personalizada no formulário

    Mensagem  JPaulo 28/1/2013, 16:46


    Public Function NextNumAno() As String
    'Gera o próximo código da tabela de numeração/ano
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim intYear As Integer
    Dim strSql As String

    'Ano atual, conforme o sistema
    intYear = Year(Date)

    'Verifica o último código para o ano
    strSql = "SELECT CLng(Left$(NumAno, Len(NumAno)-5)) As Num, " & _
    "CInt(Right$(NumAno, 4)) As Ano FROM tab_Entrevista " & _
    "WHERE CInt(Right$(NumAno, 4))=" & CStr(intYear) & _
    " ORDER BY CLng(Left$(NumAno, Len(NumAno)-5)) DESC"
    Set db = CurrentDb()
    Set rst = db.OpenRecordset(strSql, dbOpenDynaset)
    With rst
    If .BOF And .EOF Then
    NextNumAno = "0001." & CStr(intYear)
    Else
    .MoveFirst
    NextNumAno = CStr(!Num + 1) & "." & CStr(intYear)
    NextNumAno = Format(NextNumAno, "000")
    End If
    .Close
    End With
    Set rst = Nothing
    Set db = Nothing
    End Function



    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    nextNumAno - [Resolvido]Numeração Personalizada no formulário Folder_announce_new Utilize o Sistema de Busca do Fórum...
    nextNumAno - [Resolvido]Numeração Personalizada no formulário Folder_announce_new 102 Códigos VBA Gratuitos...
    nextNumAno - [Resolvido]Numeração Personalizada no formulário Folder_announce_new Instruções SQL como utilizar...
    avatar
    flecha
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 304
    Registrado : 11/01/2012

    nextNumAno - [Resolvido]Numeração Personalizada no formulário Empty Re: [Resolvido]Numeração Personalizada no formulário

    Mensagem  flecha 28/1/2013, 22:04

    JPaulo,

    Tentei e não deu certo.
    Minha tabela tem um registro 1.2013
    Quando cliquei em Incluir criou o 22013 sem ponto, ai voltei para o Primeiro registro e em seguida para o segundo.
    Cliquei em incluir e vem o erro em anexo:
    Na mesma linha.

    Tentei com o campo numérico e texto.
    avatar
    flecha
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 304
    Registrado : 11/01/2012

    nextNumAno - [Resolvido]Numeração Personalizada no formulário Empty Re: [Resolvido]Numeração Personalizada no formulário

    Mensagem  flecha 28/1/2013, 22:24

    JPaulo,

    Olha o que fiz:
    Vendo o Original e depois o seu e vendo um outro exemplo, deixei assim essa parte

    With rst
    If .BOF And .EOF Then
    NextNumAno = "0001." & CStr(intYear)

    Else
    .MoveFirst
    'NextNumAno = CStr(!Num + 1) & "." & CStr(intYear)
    'NextNumAno = Format(NextNumAno, "000")
    NextNumAno = CStr(Format(!Num + 1, "000")) & "." & CStr(intYear) <-------
    End If
    .Close
    End With
    Set rst = Nothing


    Esta funcionando como sendo o campo TEXTO.

    Pergunto

    Pode funcionar tirando o ponto (.) e passar o campo para Número?
    Parece que já testei mas dá o erro, por sinal o mesmo.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11026
    Registrado : 04/11/2009

    nextNumAno - [Resolvido]Numeração Personalizada no formulário Empty Re: [Resolvido]Numeração Personalizada no formulário

    Mensagem  JPaulo 29/1/2013, 10:08

    Se você quer em numerico, não pode ter zeros à esquerda.



    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    nextNumAno - [Resolvido]Numeração Personalizada no formulário Folder_announce_new Utilize o Sistema de Busca do Fórum...
    nextNumAno - [Resolvido]Numeração Personalizada no formulário Folder_announce_new 102 Códigos VBA Gratuitos...
    nextNumAno - [Resolvido]Numeração Personalizada no formulário Folder_announce_new Instruções SQL como utilizar...
    avatar
    flecha
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 304
    Registrado : 11/01/2012

    nextNumAno - [Resolvido]Numeração Personalizada no formulário Empty Re: [Resolvido]Numeração Personalizada no formulário

    Mensagem  flecha 29/1/2013, 10:37

    Fiz o teste com essa modificação e os Campos envolvidos para Número

    Dá o memso erro. Sad

    If .BOF And .EOF Then

    NextNumAno = "1" & CStr(intYear)
    Else
    .MoveFirst
    'NextNumAno = CStr(!Num + 1) & "." & CStr(intYear)
    'NextNumAno = Format(NextNumAno, "000")
    NextNumAno = CStr(!Num + 1) & CStr(intYear)
    avatar
    flecha
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 304
    Registrado : 11/01/2012

    nextNumAno - [Resolvido]Numeração Personalizada no formulário Empty Re: [Resolvido]Numeração Personalizada no formulário

    Mensagem  flecha 29/1/2013, 10:52

    Legal!

    Eu já estava achando que não dava concatenar Número gerado + o ano.
    Eu prefiro ser Numérico a Texto, dá menos trabalho na ordenação.

    Aguardo e obrigado.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11026
    Registrado : 04/11/2009

    nextNumAno - [Resolvido]Numeração Personalizada no formulário Empty Re: [Resolvido]Numeração Personalizada no formulário

    Mensagem  JPaulo 29/1/2013, 11:55

    Substitua a sua função por esta e altere o campo da tabela para numerico;


    Function ProximoNumero() As String
    'Função que busca o último número e acrescenta o ano atual

    Dim strSql As String
    Dim rstDoc As DAO.Recordset
    Dim numeroEncontrado As Integer

    'Cria a consulta SQL em ordem descendente para que o último numero fique em primeiro
    strSql = "Select NumAno From tab_Entrevista " & _
    "Where (Right(NumAno,4)=" & Format(Date, "yyyy") & ") " & _
    "Order By NumAno Desc"

    'Abre o recordset
    Set rstDoc = CurrentDb.OpenRecordset(strSql, dbOpenDynaset)

    'Se encontrou algum numero, valida a quantidade de carateres para excluír o ano
    If rstDoc.RecordCount > 0 Then
    If Len(rstDoc!NumAno) = 5 Then numeroEncontrado = Mid(rstDoc!NumAno, 1, 1)
    If Len(rstDoc!NumAno) = 6 Then numeroEncontrado = Mid(rstDoc!NumAno, 1, 2)
    If Len(rstDoc!NumAno) = 7 Then numeroEncontrado = Mid(rstDoc!NumAno, 1, 3)
    If Len(rstDoc!NumAno) = 8 Then numeroEncontrado = Mid(rstDoc!NumAno, 1, 4)
    If Len(rstDoc!NumAno) = 9 Then numeroEncontrado = Mid(rstDoc!NumAno, 1, 5)
    Else
    numeroEncontrado = 0
    End If

    'Próximo número = numero encontrado +1 mais o ano atual
    ProximoNumero = numeroEncontrado + 1 & Format(Date, "yyyy")

    'Fecha o recordset
    rstDoc.Close
    Set rstDoc = Nothing
    End Function


    No valor padrão da sua caixa de texto NumAno;

    =ProximoNumero()



    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    nextNumAno - [Resolvido]Numeração Personalizada no formulário Folder_announce_new Utilize o Sistema de Busca do Fórum...
    nextNumAno - [Resolvido]Numeração Personalizada no formulário Folder_announce_new 102 Códigos VBA Gratuitos...
    nextNumAno - [Resolvido]Numeração Personalizada no formulário Folder_announce_new Instruções SQL como utilizar...
    avatar
    flecha
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 304
    Registrado : 11/01/2012

    nextNumAno - [Resolvido]Numeração Personalizada no formulário Empty Re: [Resolvido]Numeração Personalizada no formulário

    Mensagem  flecha 29/1/2013, 12:18

    JPaulo,

    Mais uma vez Perfeito.

    Obrigado.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11026
    Registrado : 04/11/2009

    nextNumAno - [Resolvido]Numeração Personalizada no formulário Empty Re: [Resolvido]Numeração Personalizada no formulário

    Mensagem  JPaulo 29/1/2013, 12:20

    Obrigado pelo retorno o forum agradece.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    nextNumAno - [Resolvido]Numeração Personalizada no formulário Folder_announce_new Utilize o Sistema de Busca do Fórum...
    nextNumAno - [Resolvido]Numeração Personalizada no formulário Folder_announce_new 102 Códigos VBA Gratuitos...
    nextNumAno - [Resolvido]Numeração Personalizada no formulário Folder_announce_new Instruções SQL como utilizar...

    Conteúdo patrocinado


    nextNumAno - [Resolvido]Numeração Personalizada no formulário Empty Re: [Resolvido]Numeração Personalizada no formulário

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 07:23