#DEFINE EOL CHR(13) lcDifferencFile = "D:\Test\TableDifs\TableDifs.txt" IF NOT USED ("T1") USE T1 IN 0 ENDIF IF NOT USED ("T2") USE T2 IN 0 ENDIF SELECT T1.PK AS KeyValue, "Changed " AS RecType; FROM T1 ; INNER JOIN T2 ON T1.PK = T2.PK ; WHERE T1.O1 <> T2.O1 OR T1.O2 <> T2.O2 ; UNION ; SELECT T1.PK, "Not in T1" AS RecType ; FROM T1 ; WHERE T1.PK NOT IN (SELECT PK FROM T2) ; UNION ; SELECT T2.PK, "Not in T2" AS RecType ; FROM T2 ; WHERE T2.PK NOT IN (SELECT PK FROM T1) ; ORDER BY 2 ; INTO TABLE Difs SET ORDER TO PK IN T1 SET ORDER TO PK IN T2 SELECT Difs INDEX ON KeyValue TAG PK of CDX SET RELATION TO KeyValue INTO T1 SET RELATION TO KeyValue INTO T2 lcDifs = "" SELECT Difs SCAN DO CASE CASE RecType = "Not in T1" lcDifs = lcDifs + "Primary Key = " + KeyValue + " is not in T1." + EOL CASE RecType = "Not in T2" lcDifs = lcDifs + "Primary Key = " + KeyValue + " is not in T2." + EOL CASE RecType = "Changed " lcDifs = lcDifs + "Primary Key = " + KeyValue + " has been changed: " ; + IIF (T1.O1 <> T2.O1, "O2 has been changed from " ; + TRANSFORM (T1.O1); + " TO "; + TRANSFORM (T2.O1), "") ; + IIF (T1.O2 <> T2.O2, "O2 has been changed from " ; + TRANSFORM (T1.O2); + " TO " ; + TRANSFORM (T2.O2), "") + EOL ENDCASE ENDSCAN STRTOFILE(lcDifs, lcDifferencFile) SET RELATION OFF INTO T1 SET RELATION OFF INTO T2 SELECT T1 SET ORDER TO SELECT T2 SET ORDER TO