I've always found the "IsValid" function to be tricky. Carefully read the Help entry on this function. Usually it's used to determine whether the data type entered in a field conforms to the data type defined for the field. Sometimes it's better to use field validation to make sure entered data is in the correct format, and then use a more generic function, as in "not IsEmpty(field)" as a trigger for further action.
My 2 cents,
Thanks, that helped.