SELECT * FROM <ACCESSTABLE> WHERE <Fox Table.PK> IN (SELECT <Access Table.PK> FROM <Access Table>) AND ; ( <Fox Table.Field1> <> <Access Table.Field1> OR ; <Fox Table.Field2> <> <Access Table.Field2> OR ; etc. ) INTO TABLE CHANGED.DBFI'm using OR between the field comparisons because the first one that evaluates to .T. will cause the record to be included without checking the other fields. This means you should put the most likely changed fields first. The only pitfall with this method is the command length and the number of fields.
SELECT * FROM <ACCESSTABLE> WHERE <Fox Table.PK> NOT IN (SELECT <Access Table.PK> from <Access Table> ) INTO TABLE NEWRECS.DBFThen you just append from NEWRECS.DBF