Hola ing.Jorge una de las maneras mas sencillas y efectivas de trabajar los reportes seria usando dataset, puesto que tu ejecutas tu función que va a ir a la base de datos y este datatable almacenara datos de la consulta de la base de datos y pues ya tendrías una tabla cargada de datos, solo quedaría asociar al dataset y todo estaría completo, seria mas sencillo cosa que cuando depuras el código ahí te fijas si el datatable almaceno dichos datos que retorna la consulta, examina el siguiente articulo:
Crystal Report with DataSet and DataTable using C#
Espero haberte ayudado.