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]Excluir linhas que se duplicam em apenas 2 colunas

    asimoes
    asimoes
    Intermediário
    Intermediário


    Respeito às regras : 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 Empty [Resolvido]Excluir linhas que se duplicam em apenas 2 colunas

    Mensagem  asimoes 13/11/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
    daniloreiis
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  daniloreiis 14/11/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
    Lupércio
    Lupércio
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Lupércio 14/11/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.lol!Rolling Eyes
    asimoes
    asimoes
    Intermediário
    Intermediário


    Respeito às regras : 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 Empty Re: [Resolvido]Excluir linhas que se duplicam em apenas 2 colunas

    Mensagem  asimoes 16/11/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
    daniloreiis
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  daniloreiis 16/11/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:

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

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

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

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


    segue projeto:

    https://www.dropbox.com/s/8dxnygtrsjc51e0/sql_asimoes.accdb?dl=0


    .................................................................................
    Att, Danilo Reis
    -------------------------------------------------------------------------------------------------------------------------------------------------

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


    Respeito às regras : 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 Empty Re: [Resolvido]Excluir linhas que se duplicam em apenas 2 colunas

    Mensagem  asimoes 16/11/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
    daniloreiis
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  daniloreiis 17/11/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
    asimoes
    asimoes
    Intermediário
    Intermediário


    Respeito às regras : 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 Empty Re: [Resolvido]Excluir linhas que se duplicam em apenas 2 colunas

    Mensagem  asimoes 17/11/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 17/11/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
    daniloreiis
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  daniloreiis 17/11/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])));


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

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

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

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

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



    projeto:

    https://www.dropbox.com/s/8dxnygtrsjc51e0/sql_asimoes.accdb?dl=0


    sucesso!


    .................................................................................
    Att, Danilo Reis
    -------------------------------------------------------------------------------------------------------------------------------------------------

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


    Respeito às regras : 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 Empty Re: [Resolvido]Excluir linhas que se duplicam em apenas 2 colunas

    Mensagem  asimoes 17/11/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.

    Conteúdo patrocinado


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

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 7/11/2024, 23:51