Looking more closely at the SQL that's being produced, I still think the issue is with the way the tables are joined together.
Try this (all of these are left outer joins!):
1. Join FROM MSP_Questionnaire_Questions TO MSP_Questionnaire_Answers on MSP_Questionnaire_Question_ID.
2. Join FROM MSP_Questionnaire_Answers TO MSP_Questionnaire_History on MSP_Questionnaire_History_ID.
3. Join FROM MSP_Questionnaire_History TO Operators on Operator_ID.
4. Join FROM MSP_Questionnaire_History TO vwGenPatInfo on Patient_ID.
5. Change your Selection Criteria to something like this (edit the formula in the Select Expert, I assume the dates are parameters...) :
(IsNull({MSP_Questionaire_Answers.MSPQuestionnaire_ID}) or {MSP_Questionnaire_History.Date_Entered}>={?StartDate}) and
(IsNull({MSP_Questionaire_Answers.MSPQuestionnaire_ID}) or {MSP_Questionnaire_History.Date_Entered}<{?EndDate})
I think this will simplify the joins and get you closer to what you want. It should also account for the null links from question to history when there is no data in the answer table.
Also, are you grouping or sorting by question? If so, make sure you're using field(s) from MSP_Questionnaire_Questions for this and not field(s) from MSP_Questionnaire_Answers.
-Dell