MaximoAccess

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

Obrigado

Administração do MaximoAccess

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


    [Resolvido]Contador automático

    avatar
    kasa1982
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 16
    Registrado : 06/12/2018

    [Resolvido]Contador automático Empty [Resolvido]Contador automático

    Mensagem  kasa1982 em 27/2/2019, 19:42

    Galera, boa tarde

    Tenho uma dúvida, acredito que pra vcs seja mais simples do que pra mim esteja sendo. Não estou conseguindo autonumerar um campo de lote que criei em uma tabela, funciona da seguinte forma:

    1. Criei uma tabela que vai gravar em uma coluna o número (inteiro) do lote; (AAI), onde AA é o ano corrente e I é o inteiro sequencial. Ex. 191, 192, 193 etc isso se extende até 19999, ou seja, quero adicionar após o ano os digitos inteiros em sequencia. O problema é que estou usando uma fórmula no campo que quando chega em 199 ele vai para 200 ai inicia a contagem novamente, veja:

    Código:
    SeImed(ÉNulo([num_lote]);(SeImed(Direita(Ano(Agora());2)=Esquerda(DMáx("[num_lote]";"public_tbl_lotes_dt");2);DMáx("[num_lote]";"public_tbl_lotes_dt")+1;Direita(Ano(Agora());2) & 1));[num_lote])

    Eu consegui entender que o problema está aqui: DMáx("[num_lote]";"public_tbl_lotes_dt")+1, mas como faço para que ao chegar em 199 ele vá para 1910, 1911 e assim por diante?

    Abs a todos e obrigado

    Obs: Rodei no forum mas nao achei nada semelhante.


    Última edição por kasa1982 em 28/2/2019, 17:09, editado 1 vez(es)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7249
    Registrado : 05/11/2009

    [Resolvido]Contador automático Empty Re: [Resolvido]Contador automático

    Mensagem  Alexandre Neves em 27/2/2019, 20:44

    Boa noite,
    Utilize função

    Código:
    Function NovoLote() As Integer
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        '   código criado por Alexandre Neves, do Fórum MaximoAccess   '
        '     utilize o código livremente mas mantenha os créditos     '
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        If DCount("*", "public_tbl_lotes_dt", "Right(num_lote,2)= Right(Year(Date()),2)") = 0 Then
            NovoLote = Right(Year(Date()), 2) & 1
        Else
            NovoLote = Right(Year(Date()), 2) & DCount("*", "public_tbl_lotes_dt", "Right(num_lote,2)= Right(Year(Date()),2)") + 1
        End If
    End Function


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    kasa1982
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 16
    Registrado : 06/12/2018

    [Resolvido]Contador automático Empty Re: [Resolvido]Contador automático

    Mensagem  kasa1982 em 28/2/2019, 17:08

    Prezado @Alexandre,

    Obrigado pelo seu apoio, deu tudo certo, só tive que fazer uma pequena alteração no código conforme segue minha comparação abaixo:

    Antes:

    Código:

    Function NovoLote() As Integer
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        '   código criado por Alexandre Neves, do Fórum MaximoAccess   '
        '     utilize o código livremente mas mantenha os créditos     '
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        If DCount("*", "public_tbl_lotes_dt", "Right(num_lote,2)= Right(Year(Date()),2)") = 0 Then
            NovoLote = Right(Year(Date()), 2) & 1
        Else
            NovoLote = Right(Year(Date()), 2) & DCount("*", "public_tbl_lotes_dt", "Right(num_lote,2)= Right(Year(Date()),2)") + 1
        End If
    End Function

    Depois:
    Código:

    Function NovoLote() As Integer
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        '   código criado por Alexandre Neves, do Fórum MaximoAccess   '
        '     utilize o código livremente mas mantenha os créditos     '
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        If DCount("*", "public_tbl_lotes_dt", "Left(num_lote,2)= Right(Year(Date()),2)") = 0 Then
            NovoLote = Right(Year(Date), 2) & 1
        Else
            NovoLote = Right(Year(Date), 2) & DCount("*", "public_tbl_lotes_dt", "Left(num_lote,2)= Right(Year(Date()),2)") + 1
        End If
    End Function

    Créditos mantidos, obrigado pela colaboração.

    Atenciosamente,

    Kellyton Armelin

    Conteúdo patrocinado

    [Resolvido]Contador automático Empty Re: [Resolvido]Contador automático

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 26/5/2019, 14:33