Had an InfoPath form that calls a web service, that calls a SQL Procedure.
Logic in the stored proc was causing it return datasets that looked the same, the result sets were created dynamically. Problem was they had different datatypes. So when run the form you get strange behavior.
You could do an ODBC trace, which will show you how the procs callers (the drivers) do to the datatypes.
Or, you could have the proc fill a temp table, this way the result set it always the same