Set default value for NULL in datatable
A couple of small points.


Single letter identifiers and variable names are the devil incarnate. Replace r with something meaningful.
There's not much point in using a variable for col.DataType.ToString. You only use the variable dataType once, so it would be perfectly acceptable to get rid of a line of a code and do this instead.

Select Case col.DataType.ToString
    Case "System.DateTime"
        value = New DateTime

I also don't see much benefit to the value variable. You could just set row(col) = to whatever you would set value to.
There's no reason to explicitly check for Case "System.Decimal", "System.Int16", "System.Int32", "System.Int64". It's taken care of in the Else case.

Select Case col.DataType.ToString
    Case "System.DateTime"
        row(col) = New DateTime
    Case "System.String"
        row(col) = String.Empty
    Case "System.Boolean"
        row(col) = False
    Case Else
        row(col) = 0
End Select