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 automatica VBA

    Compartilhe

    maguim
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 197
    Registrado : 15/05/2013

    [Resolvido]Numeração automatica VBA

    Mensagem  maguim em Sex 17 Mar 2017, 17:15

    Meus Queridos

    Boa tarde !

    Procurei alguns VBA aqui pra poder editar, porem nenhum me atendeu.


    Preciso de um vba que seja inserido automaticamente o numero pra cada registro a traves de um TxtBox.

    Entendam  porquê, Eu tenho uma base ja continua com codigos e nao posso colocar a numeração automatica pelo design de tabela, pois o access nao deixa.
    Fala que eu tenho que criar um campo novo e inserir, porem os numero começados do zero nao terá validade ao colaborador, pois ele segue sua padronização.


    A ideia é que ja exista um txtbox nulo no formulario e outros txtbox's nao aclopados para inserção de dados do colaborador e seguir a tabela normalmente.



    Exemplo:

    Txtbox1 camuflado no FORMULÁRIO sem tabulação

    e txtbox 2; txtbox 3 etc... para inserção de dados

    Ao Cadastrar dados do formulário seja inserido na tabela com códigos a seguir como se fosse um numeração automática.


    Peço colaboração de  todos AO inserir algum exemplo no fórum, pois minha empresa não deixa entrar em plataforma de downloads.


    Abraços.


    Última edição por maguim em Ter 21 Mar 2017, 13:07, editado 1 vez(es)
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4394
    Registrado : 15/03/2013

    Re: [Resolvido]Numeração automatica VBA

    Mensagem  ahteixeira em Seg 20 Mar 2017, 08:32

    Olá Nathan,
    Veja se ajuda.
    [Você precisa estar registrado e conectado para ver este link.]
    Abraço
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4394
    Registrado : 15/03/2013

    Re: [Resolvido]Numeração automatica VBA

    Mensagem  ahteixeira em Seg 20 Mar 2017, 12:46

    Olá,
    Crie um módulo, cole o código abaixo e ajuste o nome do campo da numeração e tabela.
    Código:
    Public Function GeraNumeracao() As String
    'ahteixeira 2017 - MaximoAccess
        GeraNumeracao = Format(Nz(DMax("CampoNumero", "tbl_teste"), 0) + 1, "000000") 'Se não se desejar os zeros, retirar FORMAT
    End Function

    Depois é só invocar a função quando pretendido obter o numero.
    Abraço

    maguim
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 197
    Registrado : 15/05/2013

    Re: [Resolvido]Numeração automatica VBA

    Mensagem  maguim em Seg 20 Mar 2017, 13:02

    Amigao, nao me atende !

    Teria que fazer um remendo, por exemplo !

    o link que vc me mandou, ele esta txtbox's acoplados, porem meu bd esta sem nenhum txtbox acoplado.

    O CodigoControle só funciona com DoCmd.GoToRecord , , acNext
    e tem que estar acoplado o TXTBOX para modulo funcionar.

    ja tentei tirar pelo menos dois txtbox acoplado, porem nao funciona. scratch


    A ideia seria justamente essa aqui:

    Public Function NumeracaoAno() As String
    'By JPaulo@2009
    Dim fazcodigo(1) As Integer, temporario As Integer

    fazcodigo(1) = Nz(DMax("Left(CodigoControle,5)", "tblExemplo", "Right(CodigoControle,4)=Year(Date())"), 0)

    For I = 1 To UBound(fazcodigo)
    If temporario < fazcodigo(I) Then temporario = fazcodigo(I)
    Next

    NumeracaoAno = Format(temporario + 1, "00000") & "/" & year(Date)

    End Function


    porem sem ANO e txtbox nao acoplado fazendo contagem do ultimo numero da tabela. condigoControle

    abraços


    maguim
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 197
    Registrado : 15/05/2013

    Re: [Resolvido]Numeração automatica VBA

    Mensagem  maguim em Seg 20 Mar 2017, 13:09

    ahteixeira

    deixa ver se entende !


    nome do modulo é GeraNumeracao() certo ?

    coloco na fonte de controle certo ? GeraNumeracao()

    editei assim !

    Public Function GeraNumeracao() As String
    'ahteixeira 2017 - MaximoAccess
    GeraNumeracao = Format(Nz(DMax("CODPASTA", "BANCODEDADOSCENTRAL"), 0) + 1, "000000") 'Se não se desejar os zeros, retirar FORMAT
    End Function


    porem aqui nao deu certo...

    o txtbox esta aparecendo #Nome?

    abraços
    avatar
    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1038
    Registrado : 05/02/2010

    Numeração automatica VBA

    Mensagem  good guy em Seg 20 Mar 2017, 13:21

    Olá maguim,

    Tem outro código aqui no fórum para numeração automática que funciona assim:

    Código:

    Public Function contador(strCampo As String, NomedeSuaTabela As String) As Long
    Dim strSQL As String, rkt As DAO.Recordset
     
    strSQL = "SELECT Max" & "(" & strCampo & ")" & " As MaxValor"
    strSQL = strSQL & " FROM " & NomedeSuaTabela
    Set rkt = DBEngine(0)(0).OpenRecordset(strSQL, dbOpenForwardOnly)
     
    contador = Nz(rkt("MaxValor")) + 1
     
    rkt.Close: Set rkt = Nothing
    End Function

    No evento antes de inserir do formulário:

    Nota: Altere o nome do campo NUM para o nome escolhido para gerar numeração automática.

    Código:

    Private Sub Form_BeforeInsert(Cancel As Integer)
    Me.NUM = contador("NUM", "NomedeSuaTabela")
     
    End Sub

    No evento no Atual de seu formulário:

    Código:

    Private Sub Form_Current()
    'Se está em um novo registro gera o número de serie
    If Me.NewRecord Then
    Me.NUM = contador("NUM", "NomedeSuaTabela")
    End If
    End Sub

    maguim
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 197
    Registrado : 15/05/2013

    Re: [Resolvido]Numeração automatica VBA

    Mensagem  maguim em Seg 20 Mar 2017, 14:32

    good guy

    Bom dia !

    Esse codigo abaixo é um modulo ? certo ?

    eu tenho que dar algum nome a minha fonte de controle ?

    Public Function contador(strCampo As String, NomedeSuaTabela As String) As Long
    Dim strSQL As String, rkt As DAO.Recordset

    strSQL = "SELECT Max" & "(" & strCampo & ")" & " As MaxValor"
    strSQL = strSQL & " FROM " & NomedeSuaTabela
    Set rkt = DBEngine(0)(0).OpenRecordset(strSQL, dbOpenForwardOnly)

    contador = Nz(rkt("MaxValor")) + 1

    rkt.Close: Set rkt = Nothing
    End Function
    avatar
    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1038
    Registrado : 05/02/2010

    Numeração automatica VBA

    Mensagem  good guy em Seg 20 Mar 2017, 15:36

    Olá maguim,

    Não, não é um módulo. Pode ficar na IDE. Não é preciso "puxar" a função pela fonte de controle. Dê apenas o nome real de sua tabela onde está escrito "NomedeSuaTabela" e dar outro nome para o nome do campo que funcionará como contador ou numeração automática, em nosso caso (NUM).

    maguim
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 197
    Registrado : 15/05/2013

    Re: [Resolvido]Numeração automatica VBA

    Mensagem  maguim em Seg 20 Mar 2017, 17:58

    good

    entao, cheguei a por a TAG aqui, porem esta dando pau.

    tentei tirar o strcodpasta e o insert into do campo, mas mesmo assim esta dando pau.

    nao consigo pensar em mais nada, poderia me ajuda pf.
    Anexos
    teste 1.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (1.2 Mb) Baixado 9 vez(es)
    avatar
    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1038
    Registrado : 05/02/2010

    Numeração automatica VBA

    Mensagem  good guy em Seg 20 Mar 2017, 19:58

    Olá maguim,

    O tipo de dados para o campo CODPASTA tem que ser numérico (Número). Outra coisa existe um erro que não consegui identificar no critério da sua listbox, por isso nesse exemplo para download excluí toda a sintaxe. Teste por enquanto a adição de registros e como ocorre a numeração automática ao adicionar dados e cadastrar o registro.
    Anexos
    teste 1.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (59 Kb) Baixado 16 vez(es)

    maguim
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 197
    Registrado : 15/05/2013

    Re: [Resolvido]Numeração automatica VBA

    Mensagem  maguim em Ter 21 Mar 2017, 12:17

    good meu querido obg ao respaldo !

    deixa explicar, essa numeração automática não me atende, pois os txtbox's estam acoplados.
    acredito eu que teria que ser um modulo.

    Sabemos que tiver um txtbox acoplado com outros nao acoplados da pau !

    por isso que tem que ser um modulo,

    teria que ser com uma fonte de controle ()
    avatar
    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1038
    Registrado : 05/02/2010

    Numeração automatica VBA

    Mensagem  good guy em Ter 21 Mar 2017, 12:50

    Olá maguim,

    Tem certeza que precisa ser assim? Teste agora. Com campos não acoplados. Trabalhe com variáveis para campos não acoplados.
    Anexos
    teste 1.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (87 Kb) Baixado 22 vez(es)

    maguim
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 197
    Registrado : 15/05/2013

    Re: [Resolvido]Numeração automatica VBA

    Mensagem  maguim em Ter 21 Mar 2017, 13:05

    good,

    obg cara !

    Pra quem precisar do material segue alguns estudos

    a diferença esta aqui !


    Private Sub Form_BeforeInsert(Cancel As Integer)
    Dim intContador As Integer
    intContador = contador("CODPASTA", "BANCODEDADOSCENTRAL")
    Me.COD = intContador
    End Sub


    Private Sub Form_Current()
    'Se está em um novo registro gera o número de serie
    Dim intContador As Integer

    If Me.NewRecord Then
    intContador = contador("CODPASTA", "BANCODEDADOSCENTRAL")
    Me.COD = intContador
    End If
    End Sub


    Private Sub Form_Open(Cancel As Integer)

    Me.COD = DMax("CODPASTA", "BANCODEDADOSCENTRAL") + 1


    bons estudos.

    GOOD

    Se puder depois olha seu privado !

    abraços e obg mais uma vez.
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4394
    Registrado : 15/03/2013

    Re: [Resolvido]Numeração automatica VBA

    Mensagem  ahteixeira em Ter 21 Mar 2017, 13:33

    Olá a todos,
    Maguim, obrigado pelo retorno.
    Os utilizadores do fórum agradecem.

    Nota, não se esqueça de colocar o NZ caso a tabela esteja vazia.

    Já conhece o livro do nosso colega Eduardo (good guy), confira abaixo:
    [Você precisa estar registrado e conectado para ver este link.]
    Abraço

      Data/hora atual: Qui 21 Set 2017, 02:35