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]Numerador de acordo com o ano.- Problemas com duplicação

    avatar
    kleyton_mendes
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 182
    Registrado : 28/03/2011

    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Empty Numerador de acordo com o ano.- Problemas com duplicação

    Mensagem  kleyton_mendes 23/4/2013, 18:50

    Amigos,

    Ano passado fui auxiliado pelos amigos aqui forum a elaborar um code que contemplava um numerado automatico combinando com o ano.

    http://maximoaccess.forumeiros.com/t10381-resolvidonumerador-de-acordo-com-o-ano

    A principio ele funcionou muito bem, porém agora com o passar do tempo estou tendo problemas pois o sistema e eu não consegui descobrir o pq, está duplicando numerações e assim gera conflito.

    Exemplo pela sequencia ao clicar em novo o sistema deveria criar o item 00015/2013, porém ele cria o 0003/2013, ou então ele emperra no 00043/2013, e não passa... ao criar um novo ele mesmo ja tendo 00043/2013 ele cria de novo e então da essa mensagem de erro:

    As alterações solicitadas para a tabela não foram bem sucedidas, já que criaram valores duplicados de índice, chave primaria ou relação...

    Alguem poderia me ajudar?

    Kleyton Mendes
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Empty Re: [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação

    Mensagem  Alexandre Neves 23/4/2013, 21:26

    Boa noite,
    Poderá não funcionar correctamente porque o código pressupõe, como informado, que deve ter um campo auto-numeração. Acontece que eliminou um registo e isto altera o pressuposto.


    .................................................................................
    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
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Empty Re: [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação

    Mensagem  JPaulo 24/4/2013, 09:43

    Por isso eu gostar mais deste;


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

    fazcodigo(1) = Nz(DMax("Left([Nº Cadastro],4)", "tblCadastro", "Right([Nº Cadastro],4)=Year(Date())"), 0)

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

    NumeracaoAno = Format(temporario + 1, "0000") & "/" & Year(Date)
    End Function


    Nas propriedades do campo no formulario, linha valor por defeito, é só colocar:

    =NumeracaoAno()



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

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Folder_announce_new Instruções SQL como utilizar...
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Empty Re: [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação

    Mensagem  JPaulo 24/4/2013, 09:50

    Se quiser continuar a utilizar o que já tem, altere assim;


    No modulo ContadorMudaDeAnoI:

    AnoData = Format(Date, "yyyy")


    No formulario:


    Private Sub NumeraRegistrosI()
    '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 ContadorAccess, Contador2"
    sql = sql & " FROM Vazamento"
    sql = sql & " WHERE Right(contador2,4)= '" & Right(Date, 4) & "'"
    sql = sql & " ORDER BY Contador2 DESC"
    Me.Contador2 = ContadorMudaDeAnoI("contador2", sql)
    End Sub



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

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Folder_announce_new Instruções SQL como utilizar...
    avatar
    kleyton_mendes
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 182
    Registrado : 28/03/2011

    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Empty Re: [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação

    Mensagem  kleyton_mendes 24/4/2013, 18:27

    Boa tarde JPaulo

    Desculpe a demora no retorno, ocorre que conforme no topico anterior preciso que o numerador tenha a capacidade de numerar conforme a data lançada, exemplo se a pessoa cadastra algo com data 01/01/2012, ele numere 0001/2012, porém se cadastra data 01/01/2013, ele numere 0001/2013, e ele siga numeração mesmo que o cadastro não siga a sequencia de data, pois depois de um cadastro "2013, alguem pode inserir novamente um cadastro "2012" e então o sistema deve informar 0002/2012, e o codigo anterior estava funcionando perfeitamente, o porém foi este fato de esta tendo o conflito.

    Eu inserir o que você orientou porém vendo as rotinas verifiquei que ele numera de acordo o ano corrente do windows certo?

    Preciso da vossa ajuda

    Novamente muito obrigado

    Kleyton
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Empty Re: [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação

    Mensagem  JPaulo 24/4/2013, 19:05

    Ola,
    Então utilize a alteração que fiz em ultimo, apenas altere o Date para o campo do seu formulario.


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

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Folder_announce_new Instruções SQL como utilizar...
    avatar
    kleyton_mendes
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 182
    Registrado : 28/03/2011

    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Empty Re: [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação

    Mensagem  kleyton_mendes 24/4/2013, 19:32

    JPaulo,

    Tive uma percepção do erro e vou tentar explicar,

    Verifiquei quando é lançado o cadastros com datas aleatórias, 0001/2011, 0001/2012 e etc... e vc alcança uma casa decimal, o sistema e reorganiza a tabela de modo que sequencia dentro do campo contador2 fique conforme o exemplo,

    0001/2011
    0001/2012
    00010/2011
    0002/2012
    0002/2011
    0003/2011
    0004/2011
    0005/2011
    0006/2011
    0009/2011

    Assim ao clica em novo invés de ele criar o 00011/2011, ele cria o 00010/2011 novamente, pois na leitura sequencial do access esse seria o proximo.

    Alguma idéia sobre como ele fazer a leitura correta do próximo numero no contador?

    Atualmente no modulo o code está assim:

    Public Function ContadorMudaDeAnoI(strCampo As String, strsql As String)
    Dim strNum As String, db As Database
    Dim strMax As String, CampoDia As String
    Dim AnoData As String, tbl As Recordset

    Set db = CurrentDb
    AnoData = Format(Forms!FO!Data, "yyyy")

    Set tbl = db.OpenRecordset(strsql)
    If tbl.RecordCount = Null Then
    ContadorMudaDeAnoXIV = 1 & "/" & AnoData
    Else
    strMax = tbl(strCampo)
    CampoDia = Mid(strMax, (InStr(1, strMax, "/")) + 1, Cool
    If CampoDia = AnoData Then
    strNum = Left(strMax, (InStr(1, strMax, "/") - 1)) + 1
    ContadorMudaDeAnoXIV = strNum & "/" & AnoData
    Else
    MsgBox "O sistema iniciará uma nova contagem dos registros" _
    & vbCrLf & " em função da virada do Ano", vbInformation, "ATENÇÃO"
    ContadorMudaDeAnoI = 1 & "/" & AnoData
    End If
    End If
    ContadorMudaDeAnoXIV = StrZero(ContadorMudaDeAnoXIV, 15)
    tbl.Close
    Set db = Nothing
    End Function


    Muito obrigado pelo apoio até o mesmo.

    Kleyton
    avatar
    kleyton_mendes
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 182
    Registrado : 28/03/2011

    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Empty Re: [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação

    Mensagem  kleyton_mendes 24/4/2013, 20:06


    Colei errado a linha em azul, segue a correta:

    Public Function ContadorMudaDeAnoI(strCampo As String, strsql As String)
    Dim strNum As String, db As Database
    Dim strMax As String, CampoDia As String
    Dim AnoData As String, tbl As Recordset

    Set db = CurrentDb
    AnoData = Format(Forms!FO!Data, "yyyy")

    Set tbl = db.OpenRecordset(strsql)
    If tbl.RecordCount = Null Then
    ContadorMudaDeAnoXIV = 1 & "/" & AnoData
    Else
    strMax = tbl(strCampo)
    CampoDia = Mid(strMax, (InStr(1, strMax, "/")) + 1,
    If CampoDia = AnoData Then
    strNum = Left(strMax, (InStr(1, strMax, "/") - 1)) + 1
    ContadorMudaDeAnoXIV = strNum & "/" & AnoData
    Else
    MsgBox "O sistema iniciará uma nova contagem dos registros" _
    & vbCrLf & " em função da virada do Ano", vbInformation, "ATENÇÃO"
    ContadorMudaDeAnoI = 1 & "/" & AnoData
    End If
    End If
    ContadorMudaDeAnoI = StrZero(ContadorMudaDeAnoI, 15)
    tbl.Close
    Set db = Nothing
    End Function
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Empty Re: [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação

    Mensagem  JPaulo 24/4/2013, 20:18

    Amigão de momento estou no tablet que não tem Access.
    A meu ver não tem de alterar na função, mas tem no SQL, formatando essa numeração que é texto para numerico, dessa forma a ordenação já se faz corretamente com o where ano.

    Talvez assim,

    ORDER BY Val(Left(Contador2),4) DESC


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

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Folder_announce_new Instruções SQL como utilizar...
    avatar
    kleyton_mendes
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 182
    Registrado : 28/03/2011

    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Empty Re: [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação

    Mensagem  kleyton_mendes 24/4/2013, 22:34

    JPaulo,

    Concordo com você, porém meus conhecimentos em sql são bem limitados, inseri a sua sugestão:

    Dim sql As String
    sql = "SELECT ContadorAccess, Contador2"
    sql = sql & " FROM FO"
    sql = sql & " WHERE Right(contador2,4)= '" & Right(Forms!FO!Data, 4) & "'"
    sql = sql & " ORDER BY Val(Left(Contador2),4) DESC"
    Me.Contador2 = ContadorMudaDeAnoXIV("contador2", sql)
    End Sub

    Deu o seguinte erro:

    Erro em tempo de execução '3075': Número incorreto de argumentos usados com a função na expressão de consulta Val(Left(Contador2),4).
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Empty Re: [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação

    Mensagem  JPaulo 25/4/2013, 09:35

    Agora em casa e feriado.... Very Happy


    Dim sql As String
    sql = "SELECT ContadorAccess, Contador2, Val(Left(Contador2,4)) AS Cont"
    sql = sql & " FROM FO"
    sql = sql & " WHERE Right(contador2,4)= '" & Right(Forms!FO!Data, 4) & "'"
    sql = sql & " ORDER BY Val(Left(Contador2,4)) DESC"
    Me.Contador2 = ContadorMudaDeAnoXIV("Contador2", sql)
    End Sub



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

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Folder_announce_new Instruções SQL como utilizar...
    avatar
    kleyton_mendes
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 182
    Registrado : 28/03/2011

    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Empty Re: [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação

    Mensagem  kleyton_mendes 25/4/2013, 20:31

    Mestre JPaulo,

    Novamente obrigado.

    Grato

    Kleyton
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Empty Re: [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação

    Mensagem  JPaulo 25/4/2013, 22:58

    Obrigado pelo retorno amigo, o forum agradece.


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

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Folder_announce_new Instruções SQL como utilizar...

    Conteúdo patrocinado


    [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação Empty Re: [Resolvido]Numerador de acordo com o ano.- Problemas com duplicação

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 21/11/2024, 20:11