... other users will not change during the session, one way to do this may be like this. Traverse the DBF and store the record numbers of the first occurance of the keyfield in an array. Then bStrData := {|| iif( ascan( recno(), aUniques ) == 0, fieldget(1), space( <len> ) } There are many ...