MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Excluir linhas que se duplicam em apenas 2 colunas

    Compartilhe

    asimoes
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 30/04/2013

    [Resolvido]Excluir linhas que se duplicam em apenas 2 colunas

    Mensagem  asimoes em Sex 13 Nov 2015, 11:48

    Ola pessoal!

    Alguem saberia como resolver este problema?

    Tenho um tabela como abaixo:
                         
                                     
    DataSeqEncomendaUnidRev
    6/11/201511598118B
    6/11/201511161081A
    6/11/20154161591A
    6/11/20159161592A
    6/11/201515161592B
    6/11/201515161593A

    Todas as colunas receberam valores duplicados, porém preciso de um comando SQL que exclua as linha duplicadas, apenas quando a coluna "Encomenda" e a coluna "Unid" estiverem duplicas! Como podem ver nas linhas 4 e 5 as mesmas são as únicas que se repetem na coluna "Encomenda" e na coluna "Unid", sendo assim o SQL teria que excluir uma! Mas a correta a ser excluída seria a linha cuja coluna revisão fosse maior, no caso coluna "Rev" Registro "B".

    Alguém sabe como faço isso?


    .................................................................................
    Não tenho medo de compartilhar conhecimento.
    Essa é a unica coisa que as pessoas não poderão roubar de mim, pois ninguém nunca sabe igual, mesmo que saiba a mesma coisa.

    daniloreiis
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 315
    Registrado : 14/02/2011

    Excluir linhas que se duplicam em apenas 2 colunas

    Mensagem  daniloreiis em Sab 14 Nov 2015, 00:04

    Boa noite amigo, poderia disponibilizar o projeto para melhor ajuda-lo ?

    abraços


    .................................................................................
    Att, Danilo Reis
    -------------------------------------------------------------------------------------------------------------------------------------------------
    [Você precisa estar registrado e conectado para ver este link.]

    Se alguém não quiser trabalhar, não coma também.
    2 Tessalonicenses 3:10

    Lupércio
    VIP
    VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1134
    Registrado : 07/05/2011

    Re: [Resolvido]Excluir linhas que se duplicam em apenas 2 colunas

    Mensagem  Lupércio em Sab 14 Nov 2015, 13:26

    Tente assim, só insira no código o nome da tua tabela.

    No evento ao fechar do form.

    Private Sub Form_Close()
    On Error Resume Next
    Dim db As DAO.Database, rst As DAO.Recordset
    Dim strNome As String, strSaveName As String
    Set db = CurrentDb()
    Set rst = db.OpenRecordset("select * from nomedatabela order by Encomenda, Rev ASC;")
    If rst.BOF And rst.EOF Then
    MsgBox "Não existem registros..."
    Else
    rst.MoveFirst
    Do Until rst.EOF
    strDupName = rst.Fields("Encomenda") & rst.Fields("Rev") If strDupName = strSaveName Then
    rst.Delete
    Else
    strSaveName = rst.Fields("Encomenda") & rst.Fields("Rev") End If
    rst.MoveNext
    Loop
    Set rst = Nothing
    Set db = Nothing
    End If
    End Sub


    .................................................................................
    Quando tua dúvida for resolvida, de o retorno de agradecimento á aqueles que gastaram seu tempo para te ajudar.
    Clique no botão “Resolvido” logo acima do botão “Enviar” ao lado direito. Todos nós agradecemos.[Você precisa estar registrado e conectado para ver esta imagem.][Você precisa estar registrado e conectado para ver esta imagem.]

    asimoes
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 30/04/2013

    Re: [Resolvido]Excluir linhas que se duplicam em apenas 2 colunas

    Mensagem  asimoes em Seg 16 Nov 2015, 09:56

    Bom dia pessoal!

    daniloreiis então o projeto está aqui em meu trabalho e por aqui não é permitido upload nem download de arquivos!

    Lupércio, olha é quase isso a unica coisa é que ele está excluindo todas as encomendas repetidas, ele teria que excluir apenas a linha que se repetem as informações na coluna encomenda e unid, e usar a coluna Rev apenas para identificar qual linha será excluída, pois seria com a Rev Maior!

    Utilizando-se dos dados que passei na table de exemplo, a as linhas 4 e 5 a coluna encomenda se repete com a informação 16159 e a coluna unid também se repetem com a informação 2! Desse modo a linha de rev B deverá ser excluída.


    Obrigado!!!!


    .................................................................................
    Não tenho medo de compartilhar conhecimento.
    Essa é a unica coisa que as pessoas não poderão roubar de mim, pois ninguém nunca sabe igual, mesmo que saiba a mesma coisa.

    daniloreiis
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 315
    Registrado : 14/02/2011

    Excluir linhas que se duplicam em apenas 2 colunas

    Mensagem  daniloreiis em Seg 16 Nov 2015, 11:39

    Bom dia ! segue exemplo veja se ajuda!

    fiz da seguinte forma criei uma consulta que verifica se existe registro duplicadas nas colunas "Encomenda" e a coluna "Unid"

    sendo assim criei outra consulta que excluir os registro se houver na consulta de duplicados.

    segue projeto e os codigos sql abaixo:

    CON_VERIFICA
    Código:

    SELECT [tbl_movimento]![Encomenda] & "-" & [tbl_movimento]![Unid] AS REGRA1, Count([tbl_movimento]![Encomenda] & "-" & [tbl_movimento]![Unid]) AS REGRA2
    FROM tbl_movimento
    GROUP BY [tbl_movimento]![Encomenda] & "-" & [tbl_movimento]![Unid]
    HAVING (((Count([tbl_movimento]![Encomenda] & "-" & [tbl_movimento]![Unid]))>=2));


    CON_VERIFICA

    Código:

    SELECT [tbl_movimento]![Encomenda] & "-" & [tbl_movimento]![Unid] AS REGRA1, Count([tbl_movimento]![Encomenda] & "-" & [tbl_movimento]![Unid]) AS REGRA2
    FROM tbl_movimento
    GROUP BY [tbl_movimento]![Encomenda] & "-" & [tbl_movimento]![Unid]
    HAVING (((Count([tbl_movimento]![Encomenda] & "-" & [tbl_movimento]![Unid]))>=2));


    fiz o teste aqui e deu certo veja abaixo:

    [Você precisa estar registrado e conectado para ver esta imagem.]

    [Você precisa estar registrado e conectado para ver esta imagem.]

    [Você precisa estar registrado e conectado para ver esta imagem.]

    [Você precisa estar registrado e conectado para ver esta imagem.]


    segue projeto:

    [Você precisa estar registrado e conectado para ver este link.]


    .................................................................................
    Att, Danilo Reis
    -------------------------------------------------------------------------------------------------------------------------------------------------
    [Você precisa estar registrado e conectado para ver este link.]

    Se alguém não quiser trabalhar, não coma também.
    2 Tessalonicenses 3:10

    asimoes
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 30/04/2013

    Re: [Resolvido]Excluir linhas que se duplicam em apenas 2 colunas

    Mensagem  asimoes em Seg 16 Nov 2015, 21:31

    daniloreiis, é exatamente isso, mas eu preciso que a linha com a menor revisão fique e exclua somente a de revisão B.



    .................................................................................
    Não tenho medo de compartilhar conhecimento.
    Essa é a unica coisa que as pessoas não poderão roubar de mim, pois ninguém nunca sabe igual, mesmo que saiba a mesma coisa.

    daniloreiis
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 315
    Registrado : 14/02/2011

    Excluir linhas que se duplicam em apenas 2 colunas

    Mensagem  daniloreiis em Ter 17 Nov 2015, 10:06

    Você diz linha menor pelo sequencial ?


    .................................................................................
    Att, Danilo Reis
    -------------------------------------------------------------------------------------------------------------------------------------------------
    [Você precisa estar registrado e conectado para ver este link.]

    Se alguém não quiser trabalhar, não coma também.
    2 Tessalonicenses 3:10

    asimoes
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 30/04/2013

    Re: [Resolvido]Excluir linhas que se duplicam em apenas 2 colunas

    Mensagem  asimoes em Ter 17 Nov 2015, 11:49

    Sua consulta está selecionando as linhas certas, porém a exclusão está excluindo as duas linhas! O que preciso é que na hora de excluir exclua apenas a linha cuja coluna Rev seja "B".


    Futuramente será inserido na tabela as mesmas informações repetindo apenas Encomenda e Unid, mas dessa vez virá com Rev "C" e o sistema ira excluir de Rev maior, no caso a "C".

    Imagine que na coluna Rev os valores fossem numéricos, então das duas linhas que sua consulta selecionou exclui-se sempre a de maior valor! Mas no caso preciso trabalhar com campo texto e excluir o de maior valor em ordem Ascendente no caso o "B"


    Não sei se ficou claro...


    Muito Obrigado a ajuda!!!


    Última edição por asimoes em Ter 17 Nov 2015, 13:28, editado 1 vez(es)


    .................................................................................
    Não tenho medo de compartilhar conhecimento.
    Essa é a unica coisa que as pessoas não poderão roubar de mim, pois ninguém nunca sabe igual, mesmo que saiba a mesma coisa.

    daniloreiis
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 315
    Registrado : 14/02/2011

    Excluir linhas que se duplicam em apenas 2 colunas

    Mensagem  daniloreiis em Ter 17 Nov 2015, 12:27

    Bom dia segue projeto! e solução!


    CON_VERIFICA
    Código:

    SELECT [tbl_movimento]![Encomenda] & "-" & [tbl_movimento]![Unid] AS REGRA1, Count([tbl_movimento]![Encomenda] & "-" & [tbl_movimento]![Unid]) AS REGRA2
    FROM tbl_movimento
    GROUP BY [tbl_movimento]![Encomenda] & "-" & [tbl_movimento]![Unid]
    HAVING (((Count([tbl_movimento]![Encomenda] & "-" & [tbl_movimento]![Unid]))>=2));


    CON_MAX_REGISTRO
    Código:

    SELECT [tbl_movimento]![Encomenda] & "-" & [tbl_movimento]![Unid] AS REGISTROS, Max(tbl_movimento.Rev) AS MáxDeRev, Last(tbl_movimento.Código) AS ID
    FROM tbl_movimento
    GROUP BY [tbl_movimento]![Encomenda] & "-" & [tbl_movimento]![Unid]
    HAVING ((([tbl_movimento]![Encomenda] & "-" & [tbl_movimento]![Unid]) In (SELECT REGRA1 FROM [CON_VERIFICA])));



    CON_EXCLUIR
    Código:

    DELETE tbl_movimento.Código, [tbl_movimento]![Encomenda] & "-" & [tbl_movimento]![Unid] AS REGISTROS
    FROM tbl_movimento
    WHERE (((tbl_movimento.Código) In (SELECT ID FROM [CON_MAX_REGISTRO])));


    [Você precisa estar registrado e conectado para ver esta imagem.]

    [Você precisa estar registrado e conectado para ver esta imagem.]

    [Você precisa estar registrado e conectado para ver esta imagem.]

    [Você precisa estar registrado e conectado para ver esta imagem.]

    [Você precisa estar registrado e conectado para ver esta imagem.]



    projeto:

    [Você precisa estar registrado e conectado para ver este link.]


    sucesso!


    .................................................................................
    Att, Danilo Reis
    -------------------------------------------------------------------------------------------------------------------------------------------------
    [Você precisa estar registrado e conectado para ver este link.]

    Se alguém não quiser trabalhar, não coma também.
    2 Tessalonicenses 3:10

    asimoes
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 30/04/2013

    Re: [Resolvido]Excluir linhas que se duplicam em apenas 2 colunas

    Mensagem  asimoes em Ter 17 Nov 2015, 23:21

    Puts Danilo! Perfeito!

    Muito obrigado mesmo! me ajudou muito!!!

    Abraco


    .................................................................................
    Não tenho medo de compartilhar conhecimento.
    Essa é a unica coisa que as pessoas não poderão roubar de mim, pois ninguém nunca sabe igual, mesmo que saiba a mesma coisa.

      Data/hora atual: Sex 09 Dez 2016, 11:35