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]Erro em VBA para Excluir Registros Duplicados

    MarceloSilva
    MarceloSilva
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 156
    Registrado : 28/02/2011

    [Resolvido]Erro em VBA para Excluir Registros Duplicados Empty Erro em VBA para Excluir Registros Duplicados

    Mensagem  MarceloSilva 19/1/2012, 19:32

    Essa é para o amigo JPaulo

    Estou usando este exemplo do forum a qual vc disponibilizou para um de nossos caros usuários.
    Achei interessando e resolvi utilizar em meus projetos.

    Fiz conforme sugerido e ele apresenta o seguinte erro:
    Erro em Tempo de Execução 3075:
    Erro de sintaxe (operador faltando) na expressão de Consulta 'Numero Conta'.


    e Destaca a linha no VBA conforme abaixo:

    o que fiz de errado??

    Utilizei conforme orientado....segue abaixo exemplo do JPaulo a qual coletei do forum:

    -------------------------------------------------------------------------------------------------------------------
    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
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 10787
    Registrado : 04/11/2009

    [Resolvido]Erro em VBA para Excluir Registros Duplicados Empty Re: [Resolvido]Erro em VBA para Excluir Registros Duplicados

    Mensagem  JPaulo 19/1/2012, 19:44

    Faça o teste alterando o nome do seu campo,

    De:

    Numero Conta

    Para:

    NumeroConta

    E veja o que acontece...


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Erro em VBA para Excluir Registros Duplicados Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Erro em VBA para Excluir Registros Duplicados Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Erro em VBA para Excluir Registros Duplicados Folder_announce_new Instruções SQL como utilizar...
    MarceloSilva
    MarceloSilva
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 156
    Registrado : 28/02/2011

    [Resolvido]Erro em VBA para Excluir Registros Duplicados Empty Re: [Resolvido]Erro em VBA para Excluir Registros Duplicados

    Mensagem  MarceloSilva 19/1/2012, 19:54

    Mesmo erro....

    destaca sempre essa linha:

    Set rst = CurrentDb.OpenRecordset(strSQL)

    inclusive ajustei na origem da linha SQL:

    SELECT tblContas.IDCad_Contas, tblContas.NumeroConta
    FROM tblContas
    ORDER BY tblContas.IDCad_Contas;
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 10787
    Registrado : 04/11/2009

    [Resolvido]Erro em VBA para Excluir Registros Duplicados Empty Re: [Resolvido]Erro em VBA para Excluir Registros Duplicados

    Mensagem  JPaulo 19/1/2012, 19:59

    Mas você não tem que fazer esse SQl, o codigo já faz;

    Fiz aqui o teste, e com o nome do campo em separado dá erro, junto não dá mais e funfa bem.



    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Erro em VBA para Excluir Registros Duplicados Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Erro em VBA para Excluir Registros Duplicados Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Erro em VBA para Excluir Registros Duplicados Folder_announce_new Instruções SQL como utilizar...
    MarceloSilva
    MarceloSilva
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 156
    Registrado : 28/02/2011

    [Resolvido]Erro em VBA para Excluir Registros Duplicados Empty Re: [Resolvido]Erro em VBA para Excluir Registros Duplicados

    Mensagem  MarceloSilva 24/1/2012, 10:06

    caro JPaulo

    Estou efetuando alguns testes ainda....

    assim que tiver uma posição te informo....
    MarceloSilva
    MarceloSilva
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 156
    Registrado : 28/02/2011

    [Resolvido]Erro em VBA para Excluir Registros Duplicados Empty Re: [Resolvido]Erro em VBA para Excluir Registros Duplicados

    Mensagem  MarceloSilva 24/1/2012, 10:21

    Caro JPaulo

    o que fiz após alterar os campos da tabela conforme sua sugestão, foi compactar o bd.

    só que agora apareceu um novo erro:

    Erro em tempo de execução 3829

    o campo Anexo de valores múltiplos não pode ser usado em uma
    cláusula ORDER BY.


    Será que não poder ser executado em tabelas com campo anexo?
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 10787
    Registrado : 04/11/2009

    [Resolvido]Erro em VBA para Excluir Registros Duplicados Empty Re: [Resolvido]Erro em VBA para Excluir Registros Duplicados

    Mensagem  JPaulo 24/1/2012, 11:38

    Tem de acrescentar esse formato para ser ignorado no Order By

    If (fld.Type <> dbMemo) And (fld.Type <> dbLongBinary) And (fld.Type <> dbAttachment) Then



    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Erro em VBA para Excluir Registros Duplicados Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Erro em VBA para Excluir Registros Duplicados Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Erro em VBA para Excluir Registros Duplicados Folder_announce_new Instruções SQL como utilizar...
    MarceloSilva
    MarceloSilva
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 156
    Registrado : 28/02/2011

    [Resolvido]Erro em VBA para Excluir Registros Duplicados Empty Re: [Resolvido]Erro em VBA para Excluir Registros Duplicados

    Mensagem  MarceloSilva 24/1/2012, 12:09

    Estou enviando todo o código do módulo:

    não esta dando certo, desculpe minha falta de conhecimento em vb.
    agora diz que a uma expressão faltando Next sem For.
    também não sei que acrescentei ao certo a linha a qual vc enviou.....segue abaixo

    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
    If (fld.Type <> dbMemo) And (fld.Type <> dbLongBinary) And (fld.Type <> dbAttachment) 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
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 10787
    Registrado : 04/11/2009

    [Resolvido]Erro em VBA para Excluir Registros Duplicados Empty Re: [Resolvido]Erro em VBA para Excluir Registros Duplicados

    Mensagem  JPaulo 24/1/2012, 12:31

    Você só tem de acrescentar o And (fld.Type <> dbAttachment) à linha já existente, não pode duplicar.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Erro em VBA para Excluir Registros Duplicados Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Erro em VBA para Excluir Registros Duplicados Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Erro em VBA para Excluir Registros Duplicados Folder_announce_new Instruções SQL como utilizar...
    MarceloSilva
    MarceloSilva
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 156
    Registrado : 28/02/2011

    [Resolvido]Erro em VBA para Excluir Registros Duplicados Empty Re: [Resolvido]Erro em VBA para Excluir Registros Duplicados

    Mensagem  MarceloSilva 24/1/2012, 12:40

    alteração feita mas apresentando Novo erro...

    Erro em tempo de execução 3061

    Parâmentros insuficientes. Eram esperados 2


    mandando depurar a seguinte linha:

    Set rst = CurrentDb.OpenRecordset(strSQL)
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 10787
    Registrado : 04/11/2009

    [Resolvido]Erro em VBA para Excluir Registros Duplicados Empty Re: [Resolvido]Erro em VBA para Excluir Registros Duplicados

    Mensagem  JPaulo 24/1/2012, 12:52

    Grande Marcelo, pelos teste que fiz aqui funfa.

    Se preferir coloque aqui parte do seu banco para analisarmos.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Erro em VBA para Excluir Registros Duplicados Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Erro em VBA para Excluir Registros Duplicados Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Erro em VBA para Excluir Registros Duplicados Folder_announce_new Instruções SQL como utilizar...
    MarceloSilva
    MarceloSilva
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 156
    Registrado : 28/02/2011

    [Resolvido]Erro em VBA para Excluir Registros Duplicados Empty Re: [Resolvido]Erro em VBA para Excluir Registros Duplicados

    Mensagem  MarceloSilva 24/1/2012, 13:40

    Segue arquivo

    senha
    Anexos
    [Resolvido]Erro em VBA para Excluir Registros Duplicados AttachmentFinana.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (707 Kb) Baixado 16 vez(es)
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 10787
    Registrado : 04/11/2009

    [Resolvido]Erro em VBA para Excluir Registros Duplicados Empty Re: [Resolvido]Erro em VBA para Excluir Registros Duplicados

    Mensagem  JPaulo 24/1/2012, 14:20

    O problema está nos carateres especiais que você tem nos nomes dos campos na tabela;

    http://dl.dropbox.com/u/771097/Finana_OLD.rar



    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Erro em VBA para Excluir Registros Duplicados Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Erro em VBA para Excluir Registros Duplicados Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Erro em VBA para Excluir Registros Duplicados Folder_announce_new Instruções SQL como utilizar...
    MarceloSilva
    MarceloSilva
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 156
    Registrado : 28/02/2011

    [Resolvido]Erro em VBA para Excluir Registros Duplicados Empty Re: [Resolvido]Erro em VBA para Excluir Registros Duplicados

    Mensagem  MarceloSilva 24/1/2012, 14:58

    Ok JPaulo

    Entendi....

    Fiz o teste em meu projeto e deu certo.....
    Compreendi que devo ter cuidado em nome dos campos de tabela em projetos futuros, para evitar tais problemas utilizando VBA.

    Obrigado pela atenção
    Estou aprendendo muito com vc...

    até....
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 10787
    Registrado : 04/11/2009

    [Resolvido]Erro em VBA para Excluir Registros Duplicados Empty Re: [Resolvido]Erro em VBA para Excluir Registros Duplicados

    Mensagem  JPaulo 24/1/2012, 15:00

    Obrigado pelo retorno o forum agradece.

    Já agora mude o seu Avatar, esse assusta.... Laughing


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Erro em VBA para Excluir Registros Duplicados Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Erro em VBA para Excluir Registros Duplicados Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Erro em VBA para Excluir Registros Duplicados Folder_announce_new Instruções SQL como utilizar...
    coelhoc
    coelhoc
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 26/05/2012

    [Resolvido]Erro em VBA para Excluir Registros Duplicados Empty Re: [Resolvido]Erro em VBA para Excluir Registros Duplicados

    Mensagem  coelhoc 8/7/2015, 18:28

    Sei que houve varias repetiçoes sobre o assunto.
    Mas gostaria de uma opniao.
    O modulo em questao realiza todo processo correto.
    Porem ele so verifica estas dupicidades se os valores dos campos nao tiverem espaço.
    Ex: Nome Completo (a função da erro)
    NomeCompleto (a função realiza com sucesso.

    Tem como permitir que esta função realize este trabalho, tendo os campos espaços entre os nomes ?

      Data/hora atual: 27/1/2023, 05:24