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


2 participantes

    [Resolvido]comparar registro anterio com o atual

    avatar
    alexjc
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 79
    Registrado : 23/02/2016

    [Resolvido]comparar registro anterio com o atual Empty [Resolvido]comparar registro anterio com o atual

    Mensagem  alexjc 24/5/2017, 13:38

    exemplo ao clicar em um botão ele faz um loop em um arquivo tipo

    antes
    |1|0200|42654|BUCHA BAND DT P DT|||UN|00|40169990||40||||
    |2|0200|43100|BUCHA BAND DT P DT|||PC|00|40169990||40||||
    |3|0200|33382|BUCHA BAND DT P DT|||UN|00|40169990||40||||
    |4|0200|34958|BUCHA BAND DT P DT|||UN|00|40169990||40||||
    |5|0200|35455|BUCHA BAND DT P DT|||UN|00|40169990||40||||
    |5|0200|38033|BUCHA BAND DT P/DT|||UN|00|40169990||40||||

    eu quero uma logica que ao reconhecer que existe campos com dados igual na caso o campo4, ela logo atualizava assim

    depois
    |1|0200|42654|BUCHA BAND DT P DT A|||UN|00|40169990||40||||
    |2|0200|43100|BUCHA BAND DT P DT B|||PC|00|40169990||40||||
    |3|0200|33382|BUCHA BAND DT P DT C|||UN|00|40169990||40||||
    |4|0200|34958|BUCHA BAND DT P DT D|||UN|00|40169990||40||||
    |5|0200|35455|BUCHA BAND DT P DT E|||UN|00|40169990||40||||
    |5|0200|38033|BUCHA BAND DT P/DT F|||UN|00|40169990||40||||

    note que no campo4 seria adicionado o A, B, C, D, E, F


    eu tinha tentado assim

    Private Sub Comando59_Click()
    DoCmd.Requery

    Dim i As Integer
    For i = 1 To Me.Lista57

    essa seria minha logica
    if me.campo4 = me.campo4 do registro anterior then
    me.campo4 = me.campo4 + a



    End If
    DoCmd.GoToRecord , , acNext
    Next

    End Sub
    ronaldojr1
    ronaldojr1
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 419
    Registrado : 01/08/2011

    [Resolvido]comparar registro anterio com o atual Empty Re: [Resolvido]comparar registro anterio com o atual

    Mensagem  ronaldojr1 31/5/2017, 15:37

    bom dia,
    o que vc quer parece facil, mas é um pouquinho complicado de falar para o access como ele vai fazer
    pra resolver seu problema de uma maneira que ocupe menos tempo e processamento possivel.
    fiz um codigo em uma tabela de teste e funcionou perfeitamente, não sei como esta sua estrutura, mas creio
    que nao sera dificil para vc adaptar.

    segue codigo:
    Código:
    Sub updateCampo4()
    'funcao responsavel por atualizar o campo 4 quando o mesmo for repetido
    'incrementar letra do alfabeto no final do texto
    'BUCHA BAND DT P DT A
    'BUCHA BAND DT P DT B

    'Metodo de funcionamento
    '1 - cria um recordset contendo apenas os produtos que repetem mais de 1 vez
    '2 - no loop sera aberto outro recordset filtrando o valor que foi achado no recordset do passo 1.
    '     assim sera possivel capturar a chave primaria dos registros envolvidos
    '3 - atualiza o campo criando uma consulta dinamica

    'observação, nao fiz tratamento caso um produto chegue ate a letra Z

    Dim rs As Recordset
    Dim rsUpdate As Recordset
    Dim sql As String
    Dim codeAsc As Integer 'Letra A = 65 e Z = 90
    Dim contador As Integer ' faz a contagem de quantas atualizações foram feitas
    contador = 0

    sql = "SELECT Tabela_Origem.campo4, Count(Tabela_Origem.campo4) AS cont " & _
          "FROM Tabela_Origem " & _
          "GROUP BY Tabela_Origem.campo4 " & _
          "HAVING (((Count(Tabela_Origem.campo4)) > 1)) " & _
          "ORDER BY Tabela_Origem.campo4"

    Set rs = CurrentDb().OpenRecordset(sql)
    'verifica se possui registro
    If rs.RecordCount > 0 Then
        rs.MoveFirst
        'faz o loop para percorrer todos os registros da tabela de origem
        Do While Not rs.EOF
            'abre recordset filtrando apenas os produtos que esta no recordset
            'esse passo é necessario para podermos pegar o campoDaChavePrimaria, assim
            'vamos atualizar o registro exato
            sql = "SELECT Tabela_Origem.cdCampo FROM Tabela_Origem where campo4 = '" & rs!campo4 & "'" 'cdCampo e o nome da minha chave primaria
            Set rsUpdate = CurrentDb().OpenRecordset(sql)
            codeAsc = 65
            rsUpdate.MoveFirst
            
            'percorre pelos registro para fazer o update dinamico
            Do While Not rsUpdate.EOF
                DoCmd.RunSQL "UPDATE Tabela_Origem set campo4 ='" & rs!campo4 & " " & Chr(codeAsc) & "' where cdCampo = " & rsUpdate!cdCampo
                codeAsc = codeAsc + 1 'incrementa alfabeto
                contador = contador + 1 'incrementa contador
                rsUpdate.MoveNext
            Loop
            rs.MoveNext
        Loop
        MsgBox "Foram Atualizados: " & contador, vbInformation, "Teste Incremento Alfabeto"
    Else
        MsgBox "Tabela nao possui dados para ser verificado", vbCritical
    End If
    Set rs = Nothing
    Set rsUpdate = Nothing
    End Sub

    boa sorte ai fera
    avatar
    alexjc
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 79
    Registrado : 23/02/2016

    [Resolvido]comparar registro anterio com o atual Empty Re: [Resolvido]comparar registro anterio com o atual

    Mensagem  alexjc 4/6/2017, 01:58

    valeu ai cara pela ajuda, mas inda estou dando os primeiros passos e seu exemplo é complicado demais para min.
    ronaldojr1
    ronaldojr1
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 419
    Registrado : 01/08/2011

    [Resolvido]comparar registro anterio com o atual Empty Re: [Resolvido]comparar registro anterio com o atual

    Mensagem  ronaldojr1 5/6/2017, 13:17

    fiz de outro jeito,
    ve se desse jeito vc acha mais facil,
    se ainda nao conseguir fala ai onde vc nao esta conseguindo adaptar para ver se
    consigo te ajudar
    Código:
    Private Sub updateCampo4_2()

    Dim rs As Recordset
    Dim codeAsc As Integer
    Dim produtoAnterior As String
    Dim cont As Integer

    codeAsc = 65
    cont = 0

    Set rs = CurrentDb.OpenRecordset("Select campo4 from Tabela_Origem order by campo4") 'ordena em ordem alfabetica o campo4

    If rs.RecordCount > 0 Then 'so executa a verificação se a consulta existir registros
    rs.MoveFirst
    'le a consulta
        produtoAnterior = ""
        Do While Not rs.EOF
            'verifica se o produto atual e igual ao anterior
            'MsgBox produtoAnterior & " -- " & rs!campo4
            If produtoAnterior = rs!campo4 Then
                'se cont = 0 significa que o produto encontrado sera o B, entao entao que voltar ao produto anterior para trocar para A
                If cont = 0 Then
                    rs.MovePrevious 'volta 1 registro
                    rs.Edit
                    rs!campo4 = rs!campo4 & " " & Chr(codeAsc)
                    rs.Update
                   
                    codeAsc = codeAsc + 1
                   
                    rs.MoveNext 'volta para o registro
                    rs.Edit
                    rs!campo4 = rs!campo4 & " " & Chr(codeAsc)
                    rs.Update
                    codeAsc = codeAsc + 1
                   
                    cont = cont + 1
                Else
                    rs.Edit
                    rs!campo4 = rs!campo4 & " " & Chr(codeAsc)
                    rs.Update
                    codeAsc = codeAsc + 1
                End If
            Else 'zera contadores e atualiza produtoAnterior
                codeAsc = 65
                cont = 0
                produtoAnterior = rs!campo4
            End If
         
            rs.MoveNext
        Loop
    End If

    Set rs = Nothing
    End Sub
    avatar
    alexjc
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 79
    Registrado : 23/02/2016

    [Resolvido]comparar registro anterio com o atual Empty Re: [Resolvido]comparar registro anterio com o atual

    Mensagem  alexjc 6/6/2018, 22:46

    ok obrigado mas desta vez tentei de tudo mas não consegui, mesmo com ajuda de vcs é que meu conhecimento em access é limitado.
    ronaldojr1
    ronaldojr1
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 419
    Registrado : 01/08/2011

    [Resolvido]comparar registro anterio com o atual Empty Re: [Resolvido]comparar registro anterio com o atual

    Mensagem  ronaldojr1 7/6/2018, 14:21

    Não desista meu caro amigo. fala ai qual parte vc esta tendo dificuldade.

    Conteúdo patrocinado


    [Resolvido]comparar registro anterio com o atual Empty Re: [Resolvido]comparar registro anterio com o atual

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 04:18