Chances are, you're doing the job already done by Microsoft, available since v.3.5 if I'm not mistaken.
Please see:
http://en.lmgtfy.com/?q=nullable+types+VB.NET[
^]. Primary purpose of feature is exactly same as yours.
Most search results on top are quite relevant, I checked up.
[EDIT]
I looked at the deleted Answer by coccide.
I should note that the reported hassle is not a valid excuse for not using .NET nullable types.
You can always wrap conversion from data base to .NET nullable type. Having null replaced by zero is also not valid. Null and zero are two different values.
—SA