USE TABLE1 IN (SELECT("TABLE1")) USE TABLE2 IN (SELECT("TABLE2")) LOCAL m.lcCmd m.lcCmd = GetInsertCommand("TABLE1") SELECT MEMBERS SCAN INSERT INTO TABLE2 &lcCmd. ENDSCAN RETURN *Save this as GetInsertCommand.PRG or PROCEDURE GetInsertCommand LPARAMETERS m.tcSourceTable LOCAL m.lnI, m.lcFieldName, m.lcSourceFields, m.lcTargetFields STORE "" TO m.lcFieldName, m.lcTargetFields, m.lcSourceFields FOR m.lnI = 1 TO AFIELDS(laFields,m.tcSourceTable) m.lcFieldName = ALLTRIM(laFields[m.lnI,1]) m.lcTargetFields = m.lcTargetFields + m.lcFieldName + "," m.lcSourceFields = m.lcSourceFields + m.tcSourceTable + "." + m.lcFieldName + "," ENDFOR m.lnI m.lcTargetFields = LEFT(m.lcTargetFields,LEN(m.lcTargetFields)-1) m.lcSourceFields = LEFT(m.lcSourceFields,LEN(m.lcSourceFields)-1) RETURN "(" + m.lcTargetFields + ")" ; + " VALUES (" + m.lcSourceFields + ")"