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]Contador de registros personalizado no formato numero/ano

    avatar
    CyberMotta
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5
    Registrado : 26/11/2015

    [Resolvido]Contador de registros personalizado no formato numero/ano Empty [Resolvido]Contador de registros personalizado no formato numero/ano

    Mensagem  CyberMotta Sex 11 Dez 2015, 07:23

    Olá galera estou com um problema e não consigo resolver, mas sei que aqui é o lugar para que seja resolvido, seguinte:

    Pesquisei na net e achei um contador automático em função do ano, pois tenho um form e precisava que na virada do ano a minha numeração fosse reiniciada novamente, exemplo: 0001/2015..0010/2015, e na virada voltasse a 0001/2016...Bom encontrei tal código que se encaixou perfeitamente e o apliquei...Lembrando que os 1% que conheço do Access, foi lendo e assistindo a vídeos aulas na net...
    Hoje esse código me apresenta um resultado aparentemente satisfatório, mas o formato deveria ser alterado e é esse o meu impasse, o resultado é esse: 0001[2015], preciso que passe a ser [2015]0001, simples né porém meu limitado conhecimento não me permitiu tal alteração, conto com a ajuda de vocês.

    Módulo:
    Option Compare Database
    Option Explicit
    Public Function ContadorDeRegistros(strCampo As String, strSql As String)
    'Autor: Carlos em 20/01/99 e-mail: crpmoura@ig.com.br
    'Contador de registros personalizado no formato numero/ano
    'Alterado para o formato numero[ano]
    Dim strNum As String, DB As Database
    Dim strMax As String, CampoAno As String
    Dim AnoData As String, tbl As Recordset

    Set DB = CurrentDb
    'Ano tirado da data do sistema
    AnoData = Year(Date)
       
       'Abre a Tabela
       Set tbl = DB.OpenRecordset(strSql)
       'Se não há registros na tabela
       If tbl.RecordCount = 0 Then
       'Primeiro registro
       ContadorDeRegistros = 1 & "[" & AnoData & "]"
    Else
       'pega o  registro
       strMax = tbl(strCampo)
       'Pega o ano
       CampoAno = Mid(strMax, (InStr(1, strMax, "[")) + 1, 4)
       'Aqui testo o Ano do último registro com o do sistema
       'Se  for igual continue a contagem se não...
       If CampoAno = AnoData Then
          strNum = Left(strMax, (InStr(1, strMax, "[") - 1)) + 1
          ContadorDeRegistros = strNum & "[" & AnoData & "]"
       Else
          MsgBox "O sistema iniciará uma nova contagem dos registros" _
                 & vbCrLf & " em função da virada do ano", vbInformation, "ATENÇÃO"
          ContadorDeRegistros = 1 & "[" & AnoData & "]"
       End If
    End If
    'formata o número
    ContadorDeRegistros = StrZero(ContadorDeRegistros, 10)
    tbl.Close
    Set DB = Nothing
    End Function

    Public Function StrZero(nNumero As Variant, nCasas As Integer)
      StrZero = Right("000000000000" + LTrim(nNumero), nCasas)
    End Function


    Código depois de inserir:
    Private Sub Form_BeforeInsert(Cancel As Integer)
    'Escolha o melhor evento para incrementar o seu contador

    On Error GoTo Sai

    Call NumeraRegistros

    Exit Sub

    Sai:
    MsgBox "Erro - " & Err.Description

    End Sub

    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.

    Dim sql As String

    sql = "SELECT NúmeroCotaçãoAccess, NúmeroCotação"
    sql = sql & " FROM Tbl_Cotação"
    sql = sql & " ORDER BY NúmeroCotaçãoAccess DESC"

    Me.NúmeroCotação = ContadorDeRegistros("NúmeroCotação", sql)

    End Sub

    Agradeço a qualquer um que se disponha a ajudar!!!! Smile  Smile  Smile
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Contador de registros personalizado no formato numero/ano Empty Re: [Resolvido]Contador de registros personalizado no formato numero/ano

    Mensagem  Alvaro Teixeira Sex 11 Dez 2015, 13:00

    Olá Marcelo, bem-vindo ao fórum.

    Uma vez que tem alguma dificuladade na interpretação e ajuste do código, sou da opinião de ver alguns exemplos mais simples aqui no fórum.
    O assunto já foi abordado diversas vezes e de várias formas.
    Para tal efectue uma pesquisa aqui no fórum, veja como fazer:
    https://www.maximoaccess.com/t1115-busca-no-forum-search

    Coloque as palavras abaixo na pesquisa:
    Contador ano

    Abraço
    avatar
    CyberMotta
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5
    Registrado : 26/11/2015

    [Resolvido]Contador de registros personalizado no formato numero/ano Empty Re: [Resolvido]Contador de registros personalizado no formato numero/ano

    Mensagem  CyberMotta Sex 11 Dez 2015, 14:00

    Obrigado Ahteixeira, estou pesquisando mas ainda não consegui o que procurava, mas sei que vou achar...valeu!
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Contador de registros personalizado no formato numero/ano Empty Re: [Resolvido]Contador de registros personalizado no formato numero/ano

    Mensagem  Alvaro Teixeira Sex 11 Dez 2015, 17:50

    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Contador de registros personalizado no formato numero/ano Empty Re: [Resolvido]Contador de registros personalizado no formato numero/ano

    Mensagem  Alexandre Neves Dom 13 Dez 2015, 14:03

    Boa tarde,
    Veja se funciona
    Módulo:
    Option Compare Database
    Option Explicit
    Public Function ContadorDeRegistros(strCampo As String, strSql As String)
    'Autor: Carlos em 20/01/99 e-mail: crpmoura@ig.com.br
    'Contador de registros personalizado no formato numero/ano
    'Alterado para o formato numero[ano]
    Dim strNum As String, DB As Database
    Dim strMax As String, CampoAno As String
    Dim AnoData As String, tbl As Recordset

    Set DB = CurrentDb
    'Ano tirado da data do sistema
    AnoData = Year(Date)

    'Abre a Tabela
    Set tbl = DB.OpenRecordset(strSql)
    'Se não há registros na tabela
    If tbl.RecordCount = 0 Then
    'Primeiro registro
    ContadorDeRegistros = "[" & AnoData & "]" & 1
    Else
    'pega o registro
    strMax = tbl(strCampo)
    'Pega o ano
    CampoAno = Mid(strMax, 1, InStr(1, strMax, "]") - 1)
    'Aqui testo o Ano do último registro com o do sistema
    'Se for igual continue a contagem se não...
    If CampoAno = AnoData Then
    strNum = Mid(strMax, InStr(1, strMax, "]") + 1) + 1
    ContadorDeRegistros = "[" & AnoData & "]" & strNum
    Else
    MsgBox "O sistema iniciará uma nova contagem dos registros" _
    & vbCrLf & " em função da virada do ano", vbInformation, "ATENÇÃO"
    ContadorDeRegistros = "[" & AnoData & "]" & 1
    End If
    End If
    'formata o número
    ContadorDeRegistros = StrZero(ContadorDeRegistros, 10)
    tbl.Close
    Set DB = Nothing
    End Function

    Public Function StrZero(nNumero As Variant, nCasas As Integer)
    StrZero = Left(LTrim(nNumero) + "000000000000", nCasas)
    End Function


    .................................................................................
    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
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Contador de registros personalizado no formato numero/ano Empty Re: [Resolvido]Contador de registros personalizado no formato numero/ano

    Mensagem  Alvaro Teixeira Dom 13 Dez 2015, 22:05

    Olá a todos!
    Ainda foi necessário mais um ajuste, ficando assim:
    Código:
    Public Function ContadorDeRegistros(strCampo As String, strSql As String)
    'Autor: Carlos em 20/01/99 e-mail: crpmoura@ig.com.br
    'Contador de registros personalizado no formato numero/ano
    '2015 MaximoAccess - Alterado para o formato:   [ano]numero
    Dim strNum As String, DB As Database
    Dim strMax As String, CampoAno As String
    Dim AnoData As String, tbl As Recordset

    Set DB = CurrentDb
    'Ano tirado da data do sistema
    AnoData = Year(Date)

    'Abre a Tabela
    Set tbl = DB.OpenRecordset(strSql)
    'Se não há registros na tabela

        If tbl.RecordCount = 0 Then
            'Primeiro registro
            ContadorDeRegistros = "[" & AnoData & "]" & StrZero(1)
        Else
            'pega o registro
            strMax = tbl(strCampo)
            'Pega o ano
     CampoAno = Mid(strMax, 2, 4)
            'Aqui testo o Ano do último registro com o do sistema
            'Se for igual continue a contagem se não...

            If CampoAno = AnoData Then
                strNum = Mid(strMax, InStr(1, strMax, "]") + 1) + 1
                ContadorDeRegistros = "[" & AnoData & "]" & StrZero(strNum)
            Else
                MsgBox "O sistema iniciará uma nova contagem dos registros" _
                & vbCrLf & " em função da virada do ano", vbInformation, "ATENÇÃO"
                ContadorDeRegistros = "[" & AnoData & "]" & StrZero(1)
            End If
        End If
    'formata o número
    'ContadorDeRegistros = StrZero(ContadorDeRegistros, 10)
    tbl.Close
    Set DB = Nothing

    End Function

    Public Function StrZero(nNumero As Variant)
    'Public Function StrZero(nNumero As Variant, nCasas As Integer)
        'StrZero = Left(LTrim(nNumero) + "000000000000", nCasas)
        
        StrZero = Format(nNumero, "00000")
    End Function


    Segue abaixo teste.
    Abraço
    Anexos
    [Resolvido]Contador de registros personalizado no formato numero/ano AttachmentAutoNumAnual_ANO_CONTADOR.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (20 Kb) Baixado 85 vez(es)
    avatar
    CyberMotta
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5
    Registrado : 26/11/2015

    [Resolvido]Contador de registros personalizado no formato numero/ano Empty Re: [Resolvido]Contador de registros personalizado no formato numero/ano

    Mensagem  CyberMotta Seg 14 Dez 2015, 10:16

    Muito obrigado ahteixeira e Alexandre Neves, muito obrigado mesmo, agora tudo está funcionando perfeitamente...

    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Contador de registros personalizado no formato numero/ano Empty Re: [Resolvido]Contador de registros personalizado no formato numero/ano

    Mensagem  Alvaro Teixeira Qua 23 Dez 2015, 09:52

    Olá Marcelo,
    Obrigado pelo retorno, os utilizadores do fórum agradecem.
    Abraço e Bom Natal

    Conteúdo patrocinado


    [Resolvido]Contador de registros personalizado no formato numero/ano Empty Re: [Resolvido]Contador de registros personalizado no formato numero/ano

    Mensagem  Conteúdo patrocinado


      Data/hora atual: Qui 07 Nov 2024, 20:43