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, Exemplos e Codigos VBA

    [Resolvido.]Exclusão-excluir duplicidade-impedir dados duplicados

    Compartilhe

    STELLAMARIS
    Avançado
    Avançado

    Localização:
    Mensagens: 229
    Registrado: 15/03/2010

    [Resolvido.]Exclusão-excluir duplicidade-impedir dados duplicados

    Mensagem  STELLAMARIS em Ter 04 Maio 2010, 8:12 pm

    Boa tarde
    Pessoal preciso mais uma vez de ajuda. Até encontrei um topico com este assunto porém não soube fazer, alguem pode me orientar?
    Tenho uma tabela que quero excluir os dados que estão duplicados ex:
    ID - NOME - OBS
    01 - Maria - Lilas
    02 - João - Azul
    03 - João - Azul

    gostaria de eliminar definitivamente o ID 02 ou 03, como faço?
    grata
    Stella


    Última edição por STELLAMARIS em Ter 11 Maio 2010, 6:24 pm, editado 2 vez(es)

    Alexandre Neves
    Moderador Global
    Moderador Global

    Localização:
    Mensagens: 1028
    Registrado: 05/11/2009

    Re: [Resolvido.]Exclusão-excluir duplicidade-impedir dados duplicados

    Mensagem  Alexandre Neves em Ter 04 Maio 2010, 8:36 pm

    Boa tarde, STELLA

    Cole o código seguinte num módulo e execute-o (F5):
    Sub ApagaDuplicados()
    Dim Rst as Dao.recordset, strId as string, strNome as string, strObs as string, PrimeiroRegisto as boolean

    PrimeiroRegisto=True
    set rst=currentdb.openrecordset ("SELECT * FROM Tabela ORDER BY ID, Nome, Obs;")

    do while not rst.eof
    if primeiroregisto then
    primeiroregisto=false
    strid=rst("id"): strnome=rst("nome"):strobs=rst("obs")
    elseif strid=rst("id") and strnome=rst("nome") and strobs=rst("obs") then
    rst.delete
    else
    strid=rst("id"): strnome=rst("nome"):strobs=rst("obs")
    end if
    rst.movenext
    loop
    set rst=nothing
    end sub

    STELLAMARIS
    Avançado
    Avançado

    Localização:
    Mensagens: 229
    Registrado: 15/03/2010

    Re: [Resolvido.]Exclusão-excluir duplicidade-impedir dados duplicados

    Mensagem  STELLAMARIS em Ter 04 Maio 2010, 8:50 pm

    Alexandre,

    Criei o modulo e cliquei o F5, mas nada acontece onde estou errando, os dados continuam duplicados na tabela BLOCO !!!!

    Sub ApagaDuplicados()
    Dim Rst As Dao.Recordset, strCodBloco As String, strBlocoNome As String, strCodCondo As String, PrimeiroRegisto As Boolean

    PrimeiroRegisto = True
    Set Rst = CurrentDb.OpenRecordset("SELECT * FROM BLOCO ORDER BY CodBloco, BlocoNome, CodCondo;")

    Do While Not Rst.EOF
    If PrimeiroRegisto Then
    PrimeiroRegisto = False
    strCodBloco = Rst("CodBloco"): strBlocoNome = Rst("BlocoNome"): strCodCondo = Rst("CodCondo")
    ElseIf strCodBloco = Rst("CodBloco") And strBlocoNome = Rst("BlocoNome") And strCodCondo = Rst("CodCondo") Then
    Rst.Delete
    Else
    strCodBloco = Rst("CodBloco"): strBlocoNome = Rst("BlocoNome"): strCodCondo = Rst("CodCondo")
    End If
    Rst.MoveNext
    Loop
    Set Rst = Nothing
    End Sub

    JPaulo
    Moderador
    Moderador

    Localização:
    Mensagens: 3613
    Registrado: 04/11/2009

    Re: [Resolvido.]Exclusão-excluir duplicidade-impedir dados duplicados

    Mensagem  JPaulo em Ter 04 Maio 2010, 10:16 pm

    Olá Alexandre e demais utilizadores.

    Desculpe a minha intromissão mas eu gosto do simples.

    Stella abra uma consulta nova em modo SQL e cole isto;

    DELETE *
    FROM BLOCO
    WHERE CodBloco <> (SELECT Max(CodBloco) AS MaxOfCodBloco FROM BLOCO AS Dupe
    WHERE (Dupe.BlocoNome = BLOCO.BlocoNome));

    Retorne o resultado...


    .................................................................................
    Sucesso e abraço
    Success and hug

    A imaginação é inútil sem a aplicação de conhecimentos.
    Imagination is fruitless without applying knowledge.

    STELLAMARIS
    Avançado
    Avançado

    Localização:
    Mensagens: 229
    Registrado: 15/03/2010

    Re: [Resolvido.]Exclusão-excluir duplicidade-impedir dados duplicados

    Mensagem  STELLAMARIS em Ter 04 Maio 2010, 10:23 pm

    JPaulo

    Perfeito, passei a tarde toda tentando resolver isso !
    muito obrigada mesmo
    valeuuuuu


    Stella

    JPaulo
    Moderador
    Moderador

    Localização:
    Mensagens: 3613
    Registrado: 04/11/2009

    Re: [Resolvido.]Exclusão-excluir duplicidade-impedir dados duplicados

    Mensagem  JPaulo em Ter 04 Maio 2010, 10:44 pm

    Obrigado pelo seu retorno Stella.

    Precisando de novo dê um grito aqui.


    .................................................................................
    Sucesso e abraço
    Success and hug

    A imaginação é inútil sem a aplicação de conhecimentos.
    Imagination is fruitless without applying knowledge.

    STELLAMARIS
    Avançado
    Avançado

    Localização:
    Mensagens: 229
    Registrado: 15/03/2010

    Consulta exclusão - socorro

    Mensagem  STELLAMARIS em Ter 11 Maio 2010, 1:02 am

    JPaulo,
    Estou de novo precisando de sua ajuda,
    Tenho uma tabela com os campos
    CodApt; CodBloco; Apt_Numero; Apt_NumeroLetra; Apt_Situacao; Saída_apt

    Criei uma consulta que mostram as duplicidades da tabela APARTAMENTO e o resultado está abaixo:
    SELECT APARTAMENTO.[CodBloco], APARTAMENTO.[Apt_Numero], APARTAMENTO.[Apt_Situacao], APARTAMENTO.[SAIDA_APT]
    FROM APARTAMENTO
    WHERE (((APARTAMENTO.[CodBloco]) In (SELECT [CodBloco] FROM [APARTAMENTO] As Tmp GROUP BY [CodBloco],[Apt_Numero],[Apt_Situacao] HAVING Count(*)>1 And [Apt_Numero] = [APARTAMENTO].[Apt_Numero] And [Apt_Situacao] = [APARTAMENTO].[Apt_Situacao])))
    ORDER BY APARTAMENTO.[CodBloco], APARTAMENTO.[Apt_Numero], APARTAMENTO.[Apt_Situacao];

    Então tentei passar isso para SQL , seguindo o exemplo que me mandastes , mas não consegui DELETAR os dados duplicados. Não entendo nada! de SQL !
    Você pode me ajudar?
    Grata
    Stella Maris

    JPaulo
    Moderador
    Moderador

    Localização:
    Mensagens: 3613
    Registrado: 04/11/2009

    Re: [Resolvido.]Exclusão-excluir duplicidade-impedir dados duplicados

    Mensagem  JPaulo em Qui 13 Maio 2010, 10:31 am

    Stella bom dia e desculpe a demora.

    Com este código, jamais irá ter duplicidade nas suas tabelas, apenas deve informar o nome da tabela, na chamada da função, assim:

    Private Sub SeuBotao_Click()
    Call DeletaRegistrosDuplicados("APARTAMENTO")
    End Function


    Cole num módulo novo e salve:

    Public Function DeletaRegistrosDuplicados(strTabela As String)
    'By JPaulo ® Maximo Access
    Dim rst As DAO.Recordset, rst2 As DAO.Recordset
    Dim tdf As DAO.TableDef
    Dim fld As DAO.Field
    Dim strSQL As String
    Dim varX As Variant

    Set tdf = DBEngine(0)(0).TableDefs(strTabela)
    strSQL = "SELECT * FROM " & strTabela & " ORDER BY "
    For Each fld In tdf.Fields
    If (fld.Type <> dbMemo) And (fld.Type <> dbLongBinary) Then
    strSQL = strSQL & fld.Name & ", "
    End If
    Next fld

    strSQL = Left(strSQL, Len(strSQL) - 2)
    Set tdf = Nothing

    Set rst = CurrentDb.OpenRecordset(strSQL)
    Set rst2 = rst.Clone
    rst.MoveNext
    Do Until rst.EOF
    varX = rst.Bookmark
    For Each fld In rst.Fields
    If fld.Value <> rst2.Fields(fld.Name).Value Then
    GoTo NextRecord
    End If
    Next fld
    rst.Delete
    GoTo SkipBookmark
    NextRecord:
    rst2.Bookmark = varX
    SkipBookmark:
    rst.MoveNext
    Loop
    rst.Close
    MsgBox "Registros duplicados encontrado(s) e deletados com sucesso...", vbInformation
    End Function


    .................................................................................
    Sucesso e abraço
    Success and hug

    A imaginação é inútil sem a aplicação de conhecimentos.
    Imagination is fruitless without applying knowledge.

    STELLAMARIS
    Avançado
    Avançado

    Localização:
    Mensagens: 229
    Registrado: 15/03/2010

    Re: [Resolvido.]Exclusão-excluir duplicidade-impedir dados duplicados

    Mensagem  STELLAMARIS em Qui 13 Maio 2010, 6:27 pm

    JPaulo,

    Resolveu o que eu queria, aliás você é show!

    muito agradecida

    Stella

    famuller
    Novato
    Novato

    Localização:
    Mensagens: 17
    Registrado: 27/02/2012

    Excluir duplicados

    Mensagem  famuller em Seg 27 Fev 2012, 12:50 pm

    Prezados,

    Sou leigo no assunto banco de dados e estou precisando de ajuda, testei a exclusão de duplicadas conforme as msg mas não consegui efetuar o mesmo poderiam me ajudar, os campos para verificação são DATA, XPROCESSO e XEVENTO.

    Agradeço a ajuda.

    JPaulo
    Moderador
    Moderador

    Localização:
    Mensagens: 3613
    Registrado: 04/11/2009

    Re: [Resolvido.]Exclusão-excluir duplicidade-impedir dados duplicados

    Mensagem  JPaulo em Seg 27 Fev 2012, 5:18 pm

    Fabio seja bem vindo ao fórum.

    Antes de mais quando você tiver um tempinho, leia por favor as regras do fórum.

    Seu problema está a ser resolvido aqui;
    [Você precisa estar registrado e conectado para ver este link.]


    .................................................................................
    Sucesso e abraço
    Success and hug

    A imaginação é inútil sem a aplicação de conhecimentos.
    Imagination is fruitless without applying knowledge.

      Data/hora atual: Seg 21 Maio 2012, 1:11 pm