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]Autonumeração automática personalizada com campos texto

    Compartilhe

    ar7y6
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 35
    Registrado : 12/01/2011

    Autonumeração automática personalizada com campos texto

    Mensagem  ar7y6 em Seg 18 Jun 2012, 16:39

    Boa tarde!

    Estou a tentar desenvolver uma BD para ajudar no trabalho. Aproveitando uma dica do mestre JPaulo, estou a tentar criar o código que busque a sigla da equipa + numeração automática (ex: PIN-001). Tenho uma caixa de combinação, onde seleciono a equipa (ex: Pintura) e quero atualizar o campo Num_Folha (PINT-001; Pint-002...Ou CAN-001; CAN-002 etc..., conforme a equipa que seleciona).

    O código que estou a usar, disponibilizado pelo JPaulo, é:

    Dim numeroencontrado As String, proximoNumero As Integer
    'By JPaulo ® Maximo Access
    'encontrar o ultimo numero na tabela
    numeroencontrado = Nz(DMax("Num_Folha", "tblTarefas", "Equipa = " & Me.Equipa.Value), 0)
    If IsNull(numeroencontrado) Or numeroencontrado = "" Or numeroencontrado = "0" Then
    'se não existir numeração, insere o equipamento + 001 para iniciar
    numeroencontrado = Me.Equipa.Value & "-" & "001"
    'devolve ao campo a nova numeração
    Me.Num_Folha.Value = numeroencontrado
    Else
    'se já existir numeração na tabela, acrescenta +1
    proximoNumero = right(DMax("Num_Folha", "tblTarefas", "Equipa = '" & Me.Equipa.Value), 3) + 1
    'devolve ao campo a nova numeração
    Me.Num_Folha.Value = Me.Equipa.Value & "-" & Format(proximoNumero, "000")
    End If


    Já pesquisei, mas não encontro a solução. Penso que o problema esteja no tipo de dados do campo Equipa (texto), o campo Num_Folha também está defenido como texto.
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Autonumeração automática personalizada com campos texto

    Mensagem  JPaulo em Seg 18 Jun 2012, 17:06

    Ola Nuno, se Equipa é Texto, teste por favor;


    Dim numeroencontrado As String, proximoNumero As Integer
    'By JPaulo ® Maximo Access
    'encontrar o ultimo numero na tabela
    numeroencontrado = Nz(DMax("Num_Folha", "tblTarefas", "Equipa = '" & Me.Equipa.Value & "'"), 0)
    If IsNull(numeroencontrado) Or numeroencontrado = "" Or numeroencontrado = "0" Then
    'se não existir numeração, insere o equipamento + 001 para iniciar
    numeroencontrado = Me.Equipa.Value & "-" & "001"
    'devolve ao campo a nova numeração
    Me.Num_Folha.Value = numeroencontrado
    Else
    'se já existir numeração na tabela, acrescenta +1
    proximoNumero = right(DMax("Num_Folha", "tblTarefas", "Equipa = '" & Me.Equipa.Value & "'"), 3) + 1
    'devolve ao campo a nova numeração
    Me.Num_Folha.Value = Me.Equipa.Value & "-" & Format(proximoNumero, "000")
    End If


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

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    ar7y6
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 35
    Registrado : 12/01/2011

    Re: [Resolvido]Autonumeração automática personalizada com campos texto

    Mensagem  ar7y6 em Seg 18 Jun 2012, 19:16

    JPaulo, muito obrigado! Este forum é fantástico, graças a ti e aos outros mestres que estão sempre dispostos e prontos a ajudar. Continuem assim, parabens!
    Vou pôr como resolvido.
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Autonumeração automática personalizada com campos texto

    Mensagem  JPaulo em Seg 18 Jun 2012, 21:47

    Obrigado pelo retorno o fórum agradece.


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

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    fabioxiru
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1
    Registrado : 28/11/2012

    Re: [Resolvido]Autonumeração automática personalizada com campos texto

    Mensagem  fabioxiru em Sex 18 Ago 2017, 20:10

    Me desculpe reabrir esta discussão, mas tenho um problema parecido e tentei solucionar utilizando a seguinte fórmula no valor padrão do campo do meu subformulário, o qual é um formulário contínuo:

    ="A" & SeImed("codigo" É Nulo;1;DContar("codigo";"tabela")+1)

    O código é gerado da seguinte forma: A001, A002...

    Mas tenho dois problemas:
    1) Quando os formulários carregam, o cálculo é feito corretamente no valor padrão, mas se for inserir um segundo registro o valor padrão é repetido. A partir do terceiro ele vai somando 1 novamente, ficando da seguinte forma:
    A001
    A002
    A002 repetiu erroneamente
    A003
    ...
    Se eu inserir o primeiro registro e clicar fora do subformulário, o valor padrão é atualizado corretamente. Tentei inserir um evento de atualização, mas não deu certo.


    2) A letra A deveria alterar de acordo com número de forma que seria A até 999, depois alteraria para B e reiniciaria a numeração, e assim por diante.

    Tentei utilizar o código VBA acima, mas não gostaria que o valor fosse alterado sempre que eu entrasse novamente no campo, ou seja, uma vez inserido o código, ele não poderia mais mudar. Por isso estou tentando pelo Valor Padrão, mas deve haver algum outro jeito.

    Desde já agradeço
    O Fórum é top demais

      Data/hora atual: Sab 23 Set 2017, 06:46