The reason your report is prompting you as often as it does is because your subreport is in the DETAIL section of your report but you have supplied no linking criteria. Secondly you do not need to have 'spouse' fields at all in your table, but if you do not want to consider a change in structure to this table you can simply include the spouse information in the query Qry_CBirthdatyReport this way:
Code:
SELECT tbl_Clients.ClientID, [FirstName] & " " & [LastName] AS Name, tbl_Clients.BirthDate, tbl_Clients.Address, tbl_Clients.City, tbl_States.[State Abbreviation], tbl_Clients.ZipCode, tbl_Clients.HomePhone, tbl_Clients.CellPhone, tbl_Clients.BusinessPhone, tbl_Clients.Email, tbl_Clients.SpouseBirthDate, IIf(Month([spousebirthdate])=[Enter Month Number],[SpouseFirstName] & " " & [SpouseLastName],Null) AS SpouseName, IIf(Month([spousebirthdate])=[Enter Month Number],[spousebirthdate],Null) AS SpouseDate
FROM tbl_States RIGHT JOIN tbl_Clients ON tbl_States.ID = tbl_Clients.State
WHERE (((tbl_Clients.BirthDate) Is Not Null) AND ((Month([BirthDate]))=[Enter Month number])) OR (((tbl_Clients.SpouseBirthDate) Is Not Null) AND ((Month([spousebirthdate]))=[Enter Month number]));
Then on your report just put in the spouse birth date/name and shrink the text boxes containing them down to a height of 0 but set the 'can grow' property to TRUE, then whenever there is a value to show it will show.
You can repeat the address information from the primary contact if needed but really since they are identical you shouldn't need to.