EXCLUIR DADOS DUPLICADOS DO BD ACCESS

MARIOANDRADE 05/08/2014 22:25:18
#440213
Meus amigos, estou precisando de um código que exclua um registro do banco de dados caso encontre outro identico, mantendo apenas um.
esta é a conexão que uso:

Public db As New ADODB.Connection
Public rs As New ADODB.Recordset
Public path As String

Public Sub ConexaoBD()
path = App.path & [Ô]\Banco.mdb[Ô]
db.Open [Ô]Provider=microsoft.jet.oledb.4.0;data source=[Ô] & path
End Sub


Grato a todos que possam ajudar....
OMAR2011 06/08/2014 09:22:09
#440222
Fez alguma pesquisa no google.
Se não fez,olhe isto.
http://www.codelines.com/portugues0/deldupli.htm
JCM0867 06/08/2014 12:16:21
#440227
Um Select Distinct não resolve?

Select Distinct Campos Into TabelaNova From Tabela

depois renomeia a tabelaNova
MARCELO.TREZE 06/08/2014 20:03:15
#440237
assim

DELETE * FROM tabela WHERE Id NOT IN (SELECT MAX(Id) As IdMaximo FROM tabela GROUP BY Nome, Endereço)
MARIOANDRADE 09/08/2014 11:43:50
#440308
Citação:

:
assim

DELETE * FROM tabela WHERE Id NOT IN (SELECT MAX(Id) As IdMaximo FROM tabela GROUP BY Nome, Endereço)



Tentei assim mas dá erro:

ConexaoBD
rs.Delete *from TBMesRef WHERE Codigo NOT IN (SELECT MAX(Codigo) As CodigoMaximo FROM TBMesRef GROUP BY MesRef, Ano_Ref)
rs.Close: Set rs = Nothing
db.Close: Set db = Nothing


Minha intenção é deletar os registros repetidos em MesRef e Ano_Ref na tabela TBMesRef

Tô quase lá, só preciso de um empurrãozinho galera....
MARIOANDRADE 09/08/2014 11:49:44
#440309
Citação:

:
Fez alguma pesquisa no google.
Se não fez,olhe isto.
http://www.codelines.com/portugues0/deldupli.htm



Omar, segui os passos do link mas conforme mostra a imagem meu vb não tá dando a referencia IdMaximo, qual componente devo
habilitar??
OMAR2011 09/08/2014 12:34:49
#440312
Con.Execute [Ô]DELETE * FROM TbMesRef WHERE Codigo NOT IN (SELECT MAX(Codigo) As CodigoMaximo FROM TbMesRef GROUP BY Ano_Ref,Mes_Ref)[Ô]
IdMaximo não é referência.
CódigoMaximo também não é referência.
Testei com mesmo tipo de tabela e excluiu sem erros
CodigoMaximo e IdMaximo é????????????????????????????????????
Vou deixar você pesquisar e quando achar o significado vai gritar ou pedir ajuda para os universitários.
Valeu
MARIOANDRADE 09/08/2014 13:25:40
#440314
Citação:

:
Con.Execute [Ô]DELETE * FROM TbMesRef WHERE Codigo NOT IN (SELECT MAX(Codigo) As CodigoMaximo FROM TbMesRef GROUP BY Ano_Ref,Mes_Ref)[Ô]
IdMaximo não é referência.
CódigoMaximo também não é referência.
Testei com mesmo tipo de tabela e excluiu sem erros
CodigoMaximo e IdMaximo é????????????????????????????????????
Vou deixar você pesquisar e quando achar o significado vai gritar ou pedir ajuda para os universitários.
Valeu




Dá uma força pelo amor de Deus cara, já não sei mais o que fazer, só não largo esse projeto porque meu amigo precisa muito

OMAR2011 09/08/2014 16:25:35
#440315
Resposta escolhida
Exemplo simples.

Dim Con As ADODB.Connection
Dim rs As ADODB.Recordset

Private Sub Command1_Click()
Con.Execute [Ô]DELETE * FROM TbMesRef WHERE Codigo NOT IN (SELECT MAX(Codigo) As CodigoMaximo FROM TbMesRef GROUP BY Ano_Ref,Mes_Ref)[Ô]
MsgBox [Ô]Excluido[Ô]
End Sub

Private Sub Command2_Click()
rs.Open [Ô]DELETE * FROM TbMesRef WHERE Codigo NOT IN (SELECT MAX(Codigo) As CodigoMaximo FROM TbMesRef GROUP BY Ano_Ref,Mes_Ref)[Ô], Con
MsgBox [Ô]Excluido[Ô]
End Sub

Private Sub Command3_Click()
Set rs = Con.Execute([Ô]DELETE * FROM TbMesRef WHERE Codigo NOT IN (SELECT MAX(Codigo) As CodigoMaximo FROM TbMesRef GROUP BY Ano_Ref,Mes_Ref)[Ô])
MsgBox [Ô]Excluido[Ô]
End Sub
Private Sub Form_Load()
Set Con = New ADODB.Connection
Set rs = New ADODB.Recordset
Dim Caminho As String
Caminho = App.Path & [Ô]\Bras2015.accdb[Ô]
Con.Open [Ô]Provider = Microsoft.ACE.OLEDB.12.0;Data Source=[Ô] & App.Path & [Ô]\Bras2014.accdb;Persist Security Info=False[Ô]
End Sub
MARIOANDRADE 09/08/2014 17:13:50
#440317
Citação:

:
Exemplo simples.

Dim Con As ADODB.Connection
Dim rs As ADODB.Recordset

Private Sub Command1_Click()
Con.Execute [Ô]DELETE * FROM TbMesRef WHERE Codigo NOT IN (SELECT MAX(Codigo) As CodigoMaximo FROM TbMesRef GROUP BY Ano_Ref,Mes_Ref)[Ô]
MsgBox [Ô]Excluido[Ô]
End Sub

Private Sub Command2_Click()
rs.Open [Ô]DELETE * FROM TbMesRef WHERE Codigo NOT IN (SELECT MAX(Codigo) As CodigoMaximo FROM TbMesRef GROUP BY Ano_Ref,Mes_Ref)[Ô], Con
MsgBox [Ô]Excluido[Ô]
End Sub

Private Sub Command3_Click()
Set rs = Con.Execute([Ô]DELETE * FROM TbMesRef WHERE Codigo NOT IN (SELECT MAX(Codigo) As CodigoMaximo FROM TbMesRef GROUP BY Ano_Ref,Mes_Ref)[Ô])
MsgBox [Ô]Excluido[Ô]
End Sub
Private Sub Form_Load()
Set Con = New ADODB.Connection
Set rs = New ADODB.Recordset
Dim Caminho As String
Caminho = App.Path & [Ô]Bras2015.accdb[Ô]
Con.Open [Ô]Provider = Microsoft.ACE.OLEDB.12.0;Data Source=[Ô] & App.Path & [Ô]Bras2014.accdb;Persist Security Info=False[Ô]
End Sub




Funcionooooooooooooooooooooooooooooooouuuuuuuuuuuuuuuuuuuuuuu!!!!!!Vallllllllllllllllllllleeeeuuuuu mesmo, obrigado a todos que contribuíram!!!!!
Tópico encerrado , respostas não são mais permitidas