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]Numeração Sequencial com lacunas

    guilhas23
    guilhas23
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 21
    Registrado : 29/09/2015

    [Resolvido]Numeração Sequencial com lacunas Empty [Resolvido]Numeração Sequencial com lacunas

    Mensagem  guilhas23 em 26/2/2019, 18:27

    Olá, amigos!

    No fórum há bastante resolvidos acerca da numeração sequencial, porém, procurei horas e não achei a solução. Gostaria de uma numeração sequencial com lacunas, pois há casos em que, por exemplo, há a sequência 1, 2, 3 e 5.. gostaria que o access sequenciasse com o primeiro disponível, no caso, o 4 - e depois fosse pro 6 etc.

    Nesse link tem exatamente o que quero: https://www.maximoaccess.com/t2919-resolvidoaplicar-codigo-de-numeracao-sequencial-para-ler-tabela-no-back-and

    Porém, não consegui adaptar o código pra minha realidade. Seria apenas uma referência simples para a tabela local, sem necessidade de linkar para arquivo externo.

    Se alguém puder me ajudar a colocar esse código para referenciar apenas o campo código no form para a sequência código na tabela, agradeço.

    Ou mesmo apresentar uma solução mais simples para gerar essa sequência.

    Obrigado.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Numeração Sequencial com lacunas Empty Re: [Resolvido]Numeração Sequencial com lacunas

    Mensagem  Alexandre Neves em 26/2/2019, 21:40

    Boa noite
    Código:
    Function NumeroLivreVago(CampoID As String, NomeTabela As String) As Long
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        '   código criado por Alexandre Neves, do Fórum MaximoAccess   '
        '     utilize o código livremente mas mantenha os créditos     '
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        Dim Rst As DAO.Recordset, I As Integer
        Set Rst = CurrentDb.OpenRecordset("SELECT " & CampoID & " FROM " & NomeTabela & " WHERE Not IsNull(ID) ORDER BY ID;")
        
        If Rst.RecordCount = 0 Or IsNull(Rst(0)) Then
            NumeroLivreVago = 1
        Else
            I = 1
            Do
            If Rst.EOF Then
                NumeroLivreVago = I
                Exit Do
            ElseIf Len("" & Rst(0)) = 0 Or Rst(0) <> I Then
                NumeroLivreVago = I
                Exit Do
            End If
            I = I + 1
            Rst.MoveNext
            Loop
        End If
        Set Rst = Nothing
        Exit Function
    MostraErro:
        MsgBox err.Number & vbCr & err.Description
    End Function


    Última edição por Alexandre Neves em 27/2/2019, 20:10, editado 1 vez(es)


    .................................................................................
    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
    guilhas23
    guilhas23
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 21
    Registrado : 29/09/2015

    [Resolvido]Numeração Sequencial com lacunas Empty Re: [Resolvido]Numeração Sequencial com lacunas

    Mensagem  guilhas23 em 26/2/2019, 22:43

    Mestre,

    Nessa parte do código:

    Set Rst = CurrentDb.OpenRecordset("SELECT " & CampoID & " FROM " & NomeTabela & " WHERE Not IsNull(ID) ORDER BY ID;")

    eu devo substituir assim:

    Set Rst = CurrentDb.OpenRecordset("SELECT " & codproduto & " FROM " & tbproduto& " WHERE Not IsNull(codproduto) ORDER BY codproduto;")
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Numeração Sequencial com lacunas Empty Re: [Resolvido]Numeração Sequencial com lacunas

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

    Boa noite,
    Se o codproduto seja sequencial, utilize a função
    NumeroLivreVago("codproduto ", "tbproduto") As Long


    .................................................................................
    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
    guilhas23
    guilhas23
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 21
    Registrado : 29/09/2015

    [Resolvido]Numeração Sequencial com lacunas Empty Re: [Resolvido]Numeração Sequencial com lacunas

    Mensagem  guilhas23 em 1/3/2019, 02:10

    Mestre, obrigado pelo empenho em me ajudar.

    O código está dando erro nessa parte - vou destacar minhas variáveis.

    Set Rst = CurrentDb.OpenRecordset("SELECT " & codproduto & " FROM " & tbproduto & " WHERE Not IsNull(ID) ORDER BY ID;")

    Colei o código da forma que me mostrastes. Poderia, por favor, além de observar se realmente há algum erro, como eu chamo essa função no form de cadastro de produtos. Obrigado. Até mais!

    Código:
    Function NumeroLivreVago(CampoID As String, NomeTabela As String) As Long
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        '   código criado por Alexandre Neves, do Fórum MaximoAccess   '
        '     utilize o código livremente mas mantenha os créditos     '
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        Dim Rst As DAO.Recordset, I As Long
        Set Rst = CurrentDb.OpenRecordset("SELECT " & codproduto & " FROM " & tbproduto & " WHERE Not IsNull(ID) ORDER BY ID;")
        
        If Rst.RecordCount = 0 Or IsNull(Rst(0)) Then
            NumeroLivreVago = 1
        Else
            I = 1
            Do
            If Rst.EOF Then
                NumeroLivreVago = I
                Exit Do
            ElseIf Len("" & Rst(0)) = 0 Or Rst(0) <> I Then
                NumeroLivreVago = I
                Exit Do
            End If
            I = I + 1
            Rst.MoveNext
            Loop
        End If
        Set Rst = Nothing
        Exit Function
    MostraErro:
        MsgBox Err.Number & vbCr & Err.Description
    End Function
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Numeração Sequencial com lacunas Empty Re: [Resolvido]Numeração Sequencial com lacunas

    Mensagem  Alexandre Neves em 1/3/2019, 08:37

    Bom dia
    Disponibilize a parte da bd com dados representativos para se ver


    .................................................................................
    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
    guilhas23
    guilhas23
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 21
    Registrado : 29/09/2015

    [Resolvido]Numeração Sequencial com lacunas Empty Re: [Resolvido]Numeração Sequencial com lacunas

    Mensagem  guilhas23 em 1/3/2019, 16:27

    Estou enviando apenas a parte em questão para facilitar o entendimento do problema. Eu queria colocar o comando no botão A do form de produtos, para que ele automatize o número sequencial que estamos buscando.

    Desde já, obrigado pela disponibilidade.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Numeração Sequencial com lacunas Empty Re: [Resolvido]Numeração Sequencial com lacunas

    Mensagem  Alexandre Neves em 2/3/2019, 18:34

    Faltou o anexo


    .................................................................................
    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
    guilhas23
    guilhas23
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 21
    Registrado : 29/09/2015

    [Resolvido]Numeração Sequencial com lacunas Empty Re: [Resolvido]Numeração Sequencial com lacunas

    Mensagem  guilhas23 em 4/3/2019, 04:07

    Perdão.. minha internet estava ruim e acabei enviando sem o anexo.

    Reenviando..
    Anexos
    [Resolvido]Numeração Sequencial com lacunas AttachmentNumero Sequencial.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (50 Kb) Baixado 9 vez(es)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Numeração Sequencial com lacunas Empty Re: [Resolvido]Numeração Sequencial com lacunas

    Mensagem  Alexandre Neves em 4/3/2019, 09:45

    Bom dia
    Quando substitui alguma variável no código, tem de substituir em todo o código
    Set Rst = CurrentDb.OpenRecordset("SELECT " & CampoID & " FROM " & NomeTabela & " WHERE Not IsNull(" & CampoID & ") ORDER BY " & CampoID & ";")


    .................................................................................
    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
    guilhas23
    guilhas23
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 21
    Registrado : 29/09/2015

    [Resolvido]Numeração Sequencial com lacunas Empty Re: [Resolvido]Numeração Sequencial com lacunas

    Mensagem  guilhas23 em 4/3/2019, 23:35

    Perfeito, amigo.

    Agradeço muito!!!

    Podem colocar esse exemplo no repositório. Mas terá que atualizar o código com esse último que vc mandou.

    Valeu, até...

    Conteúdo patrocinado

    [Resolvido]Numeração Sequencial com lacunas Empty Re: [Resolvido]Numeração Sequencial com lacunas

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 15/12/2019, 23:11