I don't tend to mess with this part of CR as I never know how it is going to respond. What is probably happening is that when one parameter is null it is crashing and exiting. What you might try is surrounding the parameters with ISNULL({?},0).
What you are trying to do, I understand, but this might be the wrong way. I can't say for sure as I gather my data by using stored procs. How I got around this is I created a function in SQL to break up a string that the user sent which I allowed me to select the either or that you are looking for...But if you are not using stored proc, that won't work for you.
Another thing you might try is instructing the user to enter 0 for the parameter that they don't want to use...just a thought.