I assume you have two tables, one for the parts and one for the orders and you are joining them then you are applying a date range to select only a specific period of time for ordering.
Even if you were doing an outer join the date range is applied after th join has occurred so you will lose most of your "0" records there.
If you can use a stored proc or a command to get the data try that. YOu can apply the date range as a join condition or use a sub query on the orders table and join the results of that to the parts table after the date range has already been applied.