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]Numeração automatica VBA

    maguim
    maguim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Numeração automatica VBA Empty [Resolvido]Numeração automatica VBA

    Mensagem  maguim 17/3/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 21/3/2017, 13:07, editado 1 vez(es)
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Numeração automatica VBA Empty Re: [Resolvido]Numeração automatica VBA

    Mensagem  Alvaro Teixeira 20/3/2017, 08:32

    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Numeração automatica VBA Empty Re: [Resolvido]Numeração automatica VBA

    Mensagem  Alvaro Teixeira 20/3/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
    maguim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Numeração automatica VBA Empty Re: [Resolvido]Numeração automatica VBA

    Mensagem  maguim 20/3/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
    maguim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Numeração automatica VBA Empty Re: [Resolvido]Numeração automatica VBA

    Mensagem  maguim 20/3/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
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Numeração automatica VBA Empty Numeração automatica VBA

    Mensagem  good guy 20/3/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
    maguim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Numeração automatica VBA Empty Re: [Resolvido]Numeração automatica VBA

    Mensagem  maguim 20/3/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
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Numeração automatica VBA Empty Numeração automatica VBA

    Mensagem  good guy 20/3/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
    maguim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Numeração automatica VBA Empty Re: [Resolvido]Numeração automatica VBA

    Mensagem  maguim 20/3/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
    [Resolvido]Numeração automatica VBA Attachmentteste 1.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (1.2 Mb) Baixado 22 vez(es)
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Numeração automatica VBA Empty Numeração automatica VBA

    Mensagem  good guy 20/3/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
    [Resolvido]Numeração automatica VBA Attachmentteste 1.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (59 Kb) Baixado 26 vez(es)
    maguim
    maguim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Numeração automatica VBA Empty Re: [Resolvido]Numeração automatica VBA

    Mensagem  maguim 21/3/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 ()
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Numeração automatica VBA Empty Numeração automatica VBA

    Mensagem  good guy 21/3/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
    [Resolvido]Numeração automatica VBA Attachmentteste 1.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (87 Kb) Baixado 43 vez(es)
    maguim
    maguim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Numeração automatica VBA Empty Re: [Resolvido]Numeração automatica VBA

    Mensagem  maguim 21/3/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.
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Numeração automatica VBA Empty Re: [Resolvido]Numeração automatica VBA

    Mensagem  Alvaro Teixeira 21/3/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:
    https://www.maximoaccess.com/t29536-livro-publicado-tecnicas-especiais-de-access-vba
    Abraço
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Numeração automatica VBA Empty Numeração automatica VBA

    Mensagem  good guy 21/9/2018, 15:05

    Obrigado querido amigo ahTeixeira. Deus lhe abençoe grande mestre da programação.

    Conteúdo patrocinado


    [Resolvido]Numeração automatica VBA Empty Re: [Resolvido]Numeração automatica VBA

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 8/12/2024, 09:01