The query All Personnel in the attached database produces what you want for all of the records in the Personel table, I think. I wrote a function to produce the string of names. I can't think of any other way of doing that. If the database ends up with lot of records this is going to be a slow query.
Please take a look at the report I put in this. It's messy because I did it in a hurry, but it's how this is normally done. If you could live with the programs being in columns this would be the way to go. I doesn't require any code.
I didn't include anything to select the people. I wanted to get this back to you. If you need help on that let me know.