Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Rejecting Duplicates during appends
Message
De
24/10/2003 03:42:39
 
 
À
23/10/2003 16:13:54
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Divers
Thread ID:
00841699
Message ID:
00841968
Vues:
25
Hi Greg,

No, my first message as incorrect because, when VFP call KEYMATCH() on a WorkArea, it fire the internal Trigger ( check validations ).

I write a simple example for you,
it use KEYMATCH on another WorkArea ( without pending record ).
CLEAR
SET SAFETY OFF

* BUILD A 200000 Numbers with duplex 
* into a TEXT FILE for APPEND it After  
CREATE CURSOR t2 (f2 I  DEFAULT RECNO())
FOR K=1 TO 200000
INSERT INTO t2 VALUES (100*RAND())
NEXT
COPY TO TEXTLIST.TXT SDF
? 'items',_TALLY
USE
* INSERT DISTINCT FROM TEXTFILE INTO A EMPTY CURSOR
CREATE CURSOR t1 (f1 I )
INDEX ON f1 CANDIDATE TAG TAG1
SET ORDER TO

USE DBF() AGAIN IN 10000
APPEND FROM TEXTLIST.TXT SDF FOR !KEYMATCH(f1,1,10000)
? 'Append 1',_TALLY
APPEND FROM TEXTLIST.TXT SDF FOR !KEYMATCH(f1,1,10000)
? 'Append 2',_TALLY
USE IN 10000

ERASE TEXTLIST.TXT
SET ORDER TO 1
BROWSE
Because INDEXSEEK donnot fire the trigger, you can implement APPEND
NOT DUPLEX with a short and clear code solution;
i prefer KEYMATCH because it is faster ( 25% on a zero records appended )
CLEAR
SET SAFETY OFF

* BUILD A 200000 Numbers with duplex 
* into a TEXT FILE for APPEND it After  
CREATE CURSOR t2 (f2 I  DEFAULT RECNO())
FOR K=1 TO 200000
INSERT INTO t2 VALUES (100*RAND())
NEXT
COPY TO TEXTLIST.TXT SDF
? 'items',_TALLY
USE
* INSERT DISTINCT FROM TEXTFILE INTO A EMPTY CURSOR
CREATE CURSOR t1 (f1 I )
INDEX ON f1 CANDIDATE TAG TAG1

APPEND FROM TEXTLIST.TXT SDF FOR !INDEXSEEK(f1,.F.)
? 'Append 1',_TALLY
APPEND FROM TEXTLIST.TXT SDF FOR !INDEXSEEK(f1,.F.)
? 'Append 2',_TALLY

ERASE TEXTLIST.TXT

BROWSE
Fabio
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform