Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Updating records in FoxPro tables
Message
 
 
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Divers
Thread ID:
00565010
Message ID:
00565097
Vues:
20
>< SNIP >
>>>
>>>Ok, you got me :)
>>
>>:) On the serious note, if we need to delete all dups but one, I think, Ron's solution is the perfect one and it's a standard for this kind of situation.
>
>I have to disagree with you.
>First, the code he provided is incorrect and will leave only duplicates in the table. Second, if implemented properly, it has some limitations:
>- The table cannot have deleted records before this operation
>- It requires to delete all records in the table that could be slow on the big table
>- It requires creating a new index and on the big table it could take a long time
>- It requires to recall almost all records in the table that could be time consuming on the big table also.

Ok, you're right. Scanning big table is also time consuming, though :) Let's find out the optimum algorithm.

How about:
1) Create cursor curDupes as I described
scan && curDupes 
  lnKeyID = KeyID
  select MainTable
  locate for KeyID= lnKeyID
  scan while KeyID = lnKeyID
     delete
  endscan
  if !bof() && should not be
      skip - 1 
      recall && last dup record is undeleted
  endif
endscan
If it's not broken, fix it until it is.


My Blog
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform