what might be another way to look at reporting is:
write a stored proc that gets all the data that you need. Obviously, for this, or any report, you can't get all of the data in one row, but you can get all the customer data, and then the gift data.
Multiple lines, each with customer and a gift.
You can create a group for the customer. In the group header you can put the the form letter part (let's say) and in the details, you can list the gifts.
If you are skilled in SQL, use the backend to manage the data, and Crystal to display it. Linking tables is not hard, it would follow the data in your DB most likely joining tables on the foreign keys, but a script is SOOOO much more in versatility.
HTH