MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

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
    avatar
    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.
    avatar
    daniloreiis
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 329
    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
    -------------------------------------------------------------------------------------------------------------------------------------------------

    Se alguém não quiser trabalhar, não coma também.
    2 Tessalonicenses 3:10
    avatar
    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.]
    avatar
    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.
    avatar
    daniloreiis
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 329
    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
    -------------------------------------------------------------------------------------------------------------------------------------------------

    Se alguém não quiser trabalhar, não coma também.
    2 Tessalonicenses 3:10
    avatar
    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.
    avatar
    daniloreiis
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 329
    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
    -------------------------------------------------------------------------------------------------------------------------------------------------

    Se alguém não quiser trabalhar, não coma também.
    2 Tessalonicenses 3:10
    avatar
    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.
    avatar
    daniloreiis
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 329
    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
    -------------------------------------------------------------------------------------------------------------------------------------------------

    Se alguém não quiser trabalhar, não coma também.
    2 Tessalonicenses 3:10
    avatar
    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: Qui 17 Ago 2017, 02:55