Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Rejecting Duplicates during appends
Message
From
24/10/2003 03:42:39
 
 
To
23/10/2003 16:13:54
General information
Forum:
Visual FoxPro
Category:
Databases,Tables, Views, Indexing and SQL syntax
Miscellaneous
Thread ID:
00841699
Message ID:
00841968
Views:
24
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
Previous
Reply
Map
View

Click here to load this message in the networking platform