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


3 participantes

    [Resolvido]Autonumeração x Tabela com dados existentes

    avatar
    vinicius.anna
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 199
    Registrado : 29/04/2011

    [Resolvido]Autonumeração x Tabela com dados existentes Empty Autonumeração x Tabela com dados existentes

    Mensagem  vinicius.anna 7/5/2013, 21:36

    Boa tarde

    Em meu sistema possuo uma tabela que já contém mais de 300.000 registros, precisei incluir o novo campo na tabela para criar uma numeração que se reinicia a cada mês. Pesquisando no fórum encontrei um exemplo do mestre J Paulo que me atende perfeitamente. É o código abaixo:

    Código:

    Private Sub NumeraRegistros()
    'Para um contador de registros personalizado ser eficiente
    'você deve introduzir um campo autonumeração na sua tabela só
    'para facilitar a busca do ultimo registro. Ele pode ficar oculto.
    'Note que eu passo uma sql para a função em ordem decrescente e o
    'nome do campo que eu quero incrementar a contagem.
    'By - Jp
    'Origem - Fórum Maximo Access
    Dim sql As String
    sql = "SELECT Id_Agenda, Contador2"
    sql = sql & " FROM tb_Agenda"
    sql = sql & " ORDER BY Id_Agenda DESC"
    Me.Contador2 = ContadorDiário("contador2", sql)
    End Sub


    O problema é que, como a tabela tem mais de 300.000 registros, há alguma forma de aplicar esta função para criar todos os números na tabela de uma só vez? Se alguém tiver alguma dica, agradeço

    Att. Vinicius
    Fernando Bueno
    Fernando Bueno
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2115
    Registrado : 13/04/2012

    [Resolvido]Autonumeração x Tabela com dados existentes Empty Re: [Resolvido]Autonumeração x Tabela com dados existentes

    Mensagem  Fernando Bueno 8/5/2013, 01:06

    Boa noite Vinicius,

    Uma ideia seria você excluir o campo numeração automatica na tabela,

    compactar e reparar, e depois criar novamente o campo numeração automatica


    .................................................................................
    Um abraço
    Fernando Bueno


    O aumento do conhecimento é como uma esfera dilatando-se no espaço
    quanto maior a nossa compreensão,
    maior o nosso contacto com o desconhecido
    [Resolvido]Autonumeração x Tabela com dados existentes 16rzeq
    avatar
    vinicius.anna
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 199
    Registrado : 29/04/2011

    [Resolvido]Autonumeração x Tabela com dados existentes Empty Re: [Resolvido]Autonumeração x Tabela com dados existentes

    Mensagem  vinicius.anna 8/5/2013, 11:50

    Bom dia

    Realmente isto funcionaria para o contador acces que em minha tabela chamo de Id_Agenda. Vou detalhar o problema - desculpe não ter feito isto antes.

    - Com o sistema em funcinameno meu cliente resolveu que "quer" um número de ordem de consutas mensais da seguinte forma CCCCC/MM/AAAA onde C representa o numero da consua, M representa o mês e A, representa o ano, por isso tive a necessidade de criar o novo campo.

    Para novas consultas agendadas, funciona perfeitamente, o problema é que, como a tabela hoje já te mais de 300.000 e o cliente usa o sistema desde meados de 2010 existem consultas anteriores e ele quer que se faça o mesmo para tais consultas. É ai que não consegui fazer o código para ler a tabela inteira e vir criando este número de ordem respeitando o mês em que a mesma ocorreu.

    Se tiver alguma dica, agradeço.
    Att. Vinicius
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Autonumeração x Tabela com dados existentes Empty Re: [Resolvido]Autonumeração x Tabela com dados existentes

    Mensagem  Alexandre Neves 8/5/2013, 15:55

    Boa tarde,
    Não expôs o código todo envolvido.
    Dê todos os detalhes da tabela e da numeração pretendida


    .................................................................................
    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
    vinicius.anna
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 199
    Registrado : 29/04/2011

    [Resolvido]Autonumeração x Tabela com dados existentes Empty Re: [Resolvido]Autonumeração x Tabela com dados existentes

    Mensagem  vinicius.anna 9/5/2013, 15:21

    Bom dia

    Com o auxílio do mestre Avelino consegui resolver o problema com:

    Código:

    Dim un
    'If Len(Me!Contador & "") > 0 Then Exit Sub ' tem que analisar as possiveis inconsistências.  Por exemplo, não deixar alterar se número já foi lançado

    'desta forma permite lançar numeros de mês anteriores, se necessário.  Experimente lançar algo com data do mês 4 e veja o que acontece
    un = Nz(DMax("contador", "tb_agenda", "val(format(dtData,'yyyymm')) = " & Val(Format(Me!dtData, "yyyymm"))), 0) 'Captura último número do ano/mês lançado
    Screen.ActiveForm.Requery

    'caso seja novo mês de lançamento, começa numeração do 1, se não, vai incrementando o número
    Me!Contador = IIf(un = 0, Val(Format(Me!dtData, "yyyymm") & "00001"), un + 1)
    Screen.ActiveForm.Requery


    Obrigado

    Att. Vinicius

    Conteúdo patrocinado


    [Resolvido]Autonumeração x Tabela com dados existentes Empty Re: [Resolvido]Autonumeração x Tabela com dados existentes

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 29/4/2024, 11:53