USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Encontrar registros duplicados DAO
LCRamos
Pontos: 2843
GOIANIA
GO - BRASIL
Postada em 22/06/2006 03:53 hs            
Verifique o que está fazendo errado, claro que vai retornar todos, mas vai apagar os duplicados, como voce está fazendo a conexão, teste os apagados, coloque um Text no seu formulário e veja o que apaga, vai completo. (DAO e ACCESS2000).
Faça referencia ao mecnismo Jet e DAO3.6
Começa aqui {
Dim BD As DataBase
Dim rs As Recordset
Dim cPARC As String  ' ou  Long ou o que for
Dim caPARC As String
 
Private Sub Form_Load 
 Set BD = OpenDatabase("DriveCaminhoBD", False, False, "Pwd;=Senha")
 Set rs = OpenRecordset BD.("SuaTabela", DbOpenTable)
 If rs.Recordcount> 0 Then
  rs.Index = "Parc"
  rs.MoveFFiirrsstt      ' atenção move p/ o primeiro registro
  caParc = rs!Parc        ' pega o valor do primeiro registro
  cParc = 0    '  ou "" ' deixa a variavel com zero ou vazia para testar o 1º.
  Do While Not rs.Eof   ' faça enquanto não for o final do arquivo
   cParc = rs!Parc       ' verifica o valor do campo
   If cParc = caParc Then     ' se for igual ao anterior apaga
    rs.Edit
    rs.Delete
   End If
   rs.MoveNext
   caParc = rs!Parc        ' pega o valor do novo registro
  Loop
 End If
 rs.Close
 BD.Close
End Sub
 
Garanto que funciona testei aqui!
 
vlu//
vlu//
 
 
 
 
     
Ferreira
JABOTICABAL
SP - BRASIL
Postada em 24/06/2006 18:54 hs            
Caro LCRamos, eu não posso apagar os dados, penas quero saber quais estão duplicados, abaixo está o código que vc me passou que estou tentando usar, mas ainda não funcionou, rs...
 
Dim cParc As Integer
Dim caParc As Integer
If tbNNum.RecordCount > 0 Then
  tbNNum.Index = "iParc"
  tbNNum.MoveMin      ' atenção move p/ o primeiro registro
  caParc = tbNNum!Parc        ' pega o valor do primeiro registro
  cParc = 0    '  ou "" ' deixa a variavel com zero ou vazia para testar o 1º.
 
  Do While Not tbNNum.EOF   ' faça enquanto não for o final do arquivo
   cParc = tbNNum!Parc       ' verifica o valor do campo
    If cParc = caParc Then     ' se for igual ao anterior apaga
     MsgBox "Igual: " & tbNNum!Parc
    End If
   tbNNum.MoveNext
   caParc = tbNNum!Parc        ' pega o valor do novo registro
  Loop
 
End If
tbNNum.Close
 
Pq. será que não funciona !?


Rodrigo Ferreira

MSN - rjpferreira@hotmail.com

     
LCRamos
Pontos: 2843
GOIANIA
GO - BRASIL
Postada em 24/06/2006 23:46 hs            
Rodrigo, uso este código e funciona, a unica explicação, o nome do seu indice, está certo? Para este código funcionar, é preciso estar indexado pelo código, pois os duplicados estarã sempre juntos, se usar outro indice o próximo código será diferente.
Verifique isto. Outra coisa o tamanho dos campos duplicados tem que ser iguais, se o campo for uma Sting. (00001) <> (0001).
 
vlu//
 
     
Ferreira
JABOTICABAL
SP - BRASIL
Postada em 25/06/2006 00:08 hs            
Preciso apenas entender uma coisa:
 
1- Dim cParc As Integer
2- Dim caParc As Integer
3- If tbNNum.RecordCount > 0 Then
4-   tbNNum.Index = "iParc"
5-   tbNNum.MoveFirssssttttt     ' atenção move p/ o primeiro registro .MoveMin
6-   caParc = tbNNum!Parc        ' pega o valor do primeiro registro
7-   cParc = 0          '  ou "" ' deixa a variavel com zero ou vazia para testar o 1º.
8- 
9-  Do While Not tbNNum.EOF   ' faça enquanto não for o final do arquivo
10-   cParc = tbNNum!Parc       ' verifica o valor do campo
11-    If cParc = caParc Then     ' se for igual ao anterior apaga
12-     MsgBox "Igual: " & tbNNum!Parc
13-    End If
14-   tbNNum.MoveNext
15-   caParc = tbNNum!Parc        ' pega o valor do novo registro
16-  Loop
17- 
18- End If
19- tbNNum.Close
 
Considerando a variável caParc (10ª Linha) e a variável cParc (11ª Linha), na execução do looping elas sempre serão iguais, os índice estão corretos, os números duplicado são idênticos... Não consigo resolver !!!
 
Obrigado LCRamos, se vc conseguir achar o que está errado me avisa, vlu mesmo...

Rodrigo Ferreira

MSN - rjpferreira@hotmail.com

     
LCRamos
Pontos: 2843
GOIANIA
GO - BRASIL
Postada em 26/06/2006 08:27 hs            
Pra voce entender, use apenas uma variavel.
1- Dim cParc As Integer
 
3- If tbNNum.RecordCount > 0 Then
4-   tbNNum.Index = "iParc"
5-   tbNNum.MoveFirssssttttt     ' atenção move p/ o primeiro registro .MoveMin

7-   cParc = 0
8-    
9-  Do While Not tbNNum.EOF   ' faça enquanto não for o final do arquivo
11-    If cParc = tnNum!Parc Then     ' se for igual ao anterior apaga
12-     MsgBox "Igual: " & tbNNum!Parc
         Else
          cParc = tbNum!Parc
13-    End If
14-   tbNNum.MoveNext
16-  Loop
17- 
18- End If
19- tbNNum.Close
 
Verifique ele so muda o código de cParc se encontrar código diferente, iguais ele continua apagando.
 
vlu//
     
Página(s): 2/2     « ANTERIOR  

CyberWEB Network Ltda.    © Copyright 2000-2026   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página