Hola no se cual sera la forma en que lo estas haciendo pero creo que es creando una conexion a la BD directamente desde el reporte (IU) cosa que no es muy recomendable por seguridad... aca te mando otra forma de hacerlo...
1. Creas un dataSet tipado con los datos especificos que se mostraran en el reporte... (click derecho en el Proyecto, Add new Item DataSet/ lo nombras), esto creara un archivo .xsd en el proyecto, dale doble click al archivo desde el solution explorer para abrirlo, una vez abierto dale click derecho/Add New Element (tabla), y nombra todas las columnas de esa tabla y el tipo de dato para cada una...
Cuando terminas de crear esa tabla da click derecho en cualquier lado del DataSet y des-selecciona "Generate DataSet" y seleccionalo nuevamente.
2.Cuando creas el DataSet tipado, crea un CrystalReport, selecciona una nueva conexion/doble click en ADO.NET (XML), selecciona "Use classes from project", y busca el DataSet que acabas de crear en el paso 1. Dale Finish y de aca en adelante has lo mismo como si lo hubieras hecho con el tipo de conexion que estabas utilizando
------------------------------------------------------------------------------------------------------------
CON ESTO YA CREASTE EL CR PERO AHORA TIENES QUE LLENARLO
------------------------------------------------------------------------------------------------------------
1.Has la consulta a la BD y retorna los datos (ya sea con arrayList o DataSets), si es por arrayList tienes q recorrerlo y agregar cada row a un dataset corriente (System.Data.DataSet), una vez la logica retorna el resultado (pretendamos que es un DataSet), la UI tiene que hacer lo siguiente, lo cual es IMPORTANTE:
//EL DATASET CORRIENTE LEE EL SCHEMA DEL DATASET TIPADO
DataSet ds = new DataSet();
ds.ReadXmlSchema("path donde se encuentra el DataSet tipado que se creo en el paso 1");
//CREAS UNA INSTANCIA DEL REPORTE
ERPMain.Crystal_Reports.CryAsiento cryAsiento = new ERPMain.Crystal_Reports.CryAsiento();
//INICIALICIAS EL DATASOURCE DEL REPORTE PASANDOLE EL DATASET
cryAsiento.Database.Tables[0].SetDataSource(ds);
//COMO REPORTSOURCE DEL VIEWER LE PASAS LA INSTACIA DEL REPORTE
this.crystalReportViewer.ReportSource = cryAsiento;
Una vez hecho esto tendras el reporte, no te pedira ningun password para la BD ya que de esto se encarga la logica...
Espero que te sirva de algo, cualquier pregunta con mucho gusto (a quien sea) a
[email protected] o
[email protected], para ambos tengo msn (no asi hotmail) suerte chao