Principales respuestas
crystal report - usar un reporte para dos bases de datos

Pregunta
-
Buenos Días:
Estoy haciendo un pequeño aplicativo con dos bases de datos :
1.- bd_siga
2.-bd_espejo
he realizado un reporte en crystal report para las comisiones de los vendedores las dos bases de datos tienes los mismos procedimientos las mismas tablas es como una copia 1=2
ahora lo que me gustaría hacer es que ese reporte que realice en crystal report me funcione con las dos bases de datos, se que si se puede. pero nose como hacerlo.
porque al crear en reporte me pide que me conecte a una bd que solo me deja a una.
¿cual seria la solución para este tipo de funcion, estare a la espera de su acertada respuesta?.
y algo mas si no es abusar :
en un mismo reporte puedo mostrar el detalle o bien solo los totales de acuerdo lo que el usuario quiera verla.
- Cambiado Eder Costa jueves, 6 de septiembre de 2012 12:39 (De:Lenguaje C#)
Respuestas
-
Buenas, por lo que entiendo las dos bases son iguales, y imaginándome tu diseño seleccione en un combo la db1, y le doy mostrar y me muestra los datos de la db1, y si selecciono del combo la db2, me muestra los datos de la otra. una imaginación que he realizado comprendiendo tu pregunta. claro que se puede hacer, puedes hacerlos de varias formas, la mas fácil y no tan compleja es que en tu web config no se si tengas claves agregadas, o la misma constring, indistintamente como lo tengas, la idea es que cuando seleccione una muesta los datos de 1 o del otro.
lo único importante es pasar los datos de autenticación cuando cargas la intancia de tu reportes, lo mandas a autenticar, porque el nombre es diferente la propiedad del reportdocuement tiene un método llamado SetDatabaseLogon, en donde toma los datos del server. y listo no deberías tener problema
yo hago uno que se conecta a sql server y a Oracle, con el mismo reporte en tiempo real. y me funciona a la perfección.
cualquier ayuda adicional estamos a la orden.
saludos
Desarrollo de Sistemas
- Marcado como respuesta Robin Ramirez jueves, 25 de octubre de 2012 21:21
Todas las respuestas
-
Create una vista en la base de datos, luego asigna esta vista al reporte
Angel R. Jimenez G.
Software Development
Santo Domingo
Republica Dominicana
Blog- Marcado como respuesta Robin Ramirez sábado, 1 de septiembre de 2012 16:51
- Desmarcado como respuesta Robin Ramirez sábado, 1 de septiembre de 2012 16:51
-
Create una vista en la base de datos, luego asigna esta vista al reporte
Angel R. Jimenez G.
Software Development
Santo Domingo
Republica Dominicana
BlogAmigo gracias por responder, pero una vista de las 2 bases de datos al parecer no me explique bien .
tengo:
1.-bd_01 -- procedimiento almacenado ="comisionvendedor"
2.-bd_02 -- procedimiento almacenado ="comisionvendedor"
-------------------
crystal report
tengo una carpeta "rpt" donde tengo todos los reportes echos uno de ellos es "comisionvendedor.rpt", me gustaría que "comisionvendedor.rpt" me sirva tanto para la bd_01 como para la bd_02 ya que los dos tiene el mismo procedimiento, los mismos campos ,etc.
pregunta:
¿como podria hacer esto ,se programaría en el form (yo trabajo con windows form) o en el crystal report?.
espero me halla explicado bien esta vez .
-
-
quieres que te saque dos reportes al mismo tiempo de las 2 bds?
o que te junte la informacion de consulta bd1 + consulta bd2? saludos
no amigo , la idea es de la siguiente manera cuando yo quiera sacar el reporte de comisionvendedor de la bd1 lo haga en comisionvendedor.rpt
y cuando quiera sacar el reporte de comisionvendedor de la bd2 lo realize con el mismo comisionvendedor.rpt ,
de lo contrario seria crear comisionvendedor.rpt uno para la bd1 y otro pra la bd2 y creo q no seria lo correcto
-
Perdon las vista son para la tabla no para la base de datos. Porque no te crea un metodo que tome como parametro de entrada el nombre de la base de datos en la que quiere operar y que retorne algun objecto de origen de datos como el BindingSource para establecer la propiedad value del ReportDataSource, algo como:
private BindingSource GetData(string DatabaseName) { #region DataSet using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionStringName"].ConnectionString)) { StringBuilder query = new StringBuilder(); query.Append("USE [" + DatabaseName + "]\n"); query.Append("GO\n"); query.Append("SELECT ColumName FROM dbo.TableName\n"); query.Append("GO\n"); using (SqlCommand command = new SqlCommand(query.ToString(), connection)) { DataSet ds = new DataSet(); SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = command; try { connection.Open(); da.Fill(ds); } finally { connection.Close(); } return new BindingSource(ds, "DataMember"); } } #endregion }
Luego llamaria este metodo donde lo necesite, algo como:
reportDataSource1.Value = GetData("DatabaseName");
Angel R. Jimenez G.
Software Development
Santo Domingo
Republica Dominicana
Blog- Marcado como respuesta Robin Ramirez lunes, 3 de septiembre de 2012 14:49
- Desmarcado como respuesta Robin Ramirez lunes, 3 de septiembre de 2012 14:49
-
Perdon las vista son para la tabla no para la base de datos. Porque no te crea un metodo que tome como parametro de entrada el nombre de la base de datos en la que quiere operar y que retorne algun objecto de origen de datos como el BindingSource para establecer la propiedad value del ReportDataSource, algo como:
private BindingSource GetData(string DatabaseName) { #region DataSet using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionStringName"].ConnectionString)) { StringBuilder query = new StringBuilder(); query.Append("USE [" + DatabaseName + "]\n"); query.Append("GO\n"); query.Append("SELECT ColumName FROM dbo.TableName\n"); query.Append("GO\n"); using (SqlCommand command = new SqlCommand(query.ToString(), connection)) { DataSet ds = new DataSet(); SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = command; try { connection.Open(); da.Fill(ds); } finally { connection.Close(); } return new BindingSource(ds, "DataMember"); } } #endregion }
Luego llamaria este metodo donde lo necesite, algo como:
reportDataSource1.Value = GetData("DatabaseName");
Angel R. Jimenez G.
Software Development
Santo Domingo
Republica Dominicana
Bloghola amigo Angel, esta muy bien tu explicacion lo cual me ayudo en el windows form.
ahora el problema es con el reporte crystal report .
lo que pasa es cuando nosotros queremos crear un reporte los pasos son los siguiente
agregar / nuevo items / reporte / cristal report1.rpt
al seleccionarlo nos pide que nos conectemos a una base de datos es especifico y nos pide un procedimiento almacenado o una tabla , etc.
ahi es donde que quedo ya que yo quiero que ese reporte me sirva para las dos bases de datos y como hacer eso ya que al crear el reporte me pide que me conecte a una base de datos en especifico .
* me gustaria saber amigo tal ves halla otra manera de programar eso en el crystal report
y gracias por la ayuda que me estas brindando que sirve de mucho.
-
Si te aparece un cuadro como este???????????
Verificate a ver si esta pagina Controlar Autentificación Crystal Reports de jason ulloa te puede ayudar.
Angel R. Jimenez G.
Software Development
Santo Domingo
Republica Dominicana
Blog -
Hola Lenin Ramirez!
Tu post se trasladará al foro más apropiado para tu pregunta.
Saludos.
Eder Costa
LATAM Forum Support Engineer
Microsoft Corporation
- Editado Eder Costa jueves, 6 de septiembre de 2012 12:38
-
Buenas, por lo que entiendo las dos bases son iguales, y imaginándome tu diseño seleccione en un combo la db1, y le doy mostrar y me muestra los datos de la db1, y si selecciono del combo la db2, me muestra los datos de la otra. una imaginación que he realizado comprendiendo tu pregunta. claro que se puede hacer, puedes hacerlos de varias formas, la mas fácil y no tan compleja es que en tu web config no se si tengas claves agregadas, o la misma constring, indistintamente como lo tengas, la idea es que cuando seleccione una muesta los datos de 1 o del otro.
lo único importante es pasar los datos de autenticación cuando cargas la intancia de tu reportes, lo mandas a autenticar, porque el nombre es diferente la propiedad del reportdocuement tiene un método llamado SetDatabaseLogon, en donde toma los datos del server. y listo no deberías tener problema
yo hago uno que se conecta a sql server y a Oracle, con el mismo reporte en tiempo real. y me funciona a la perfección.
cualquier ayuda adicional estamos a la orden.
saludos
Desarrollo de Sistemas
- Marcado como respuesta Robin Ramirez jueves, 25 de octubre de 2012 21:21
-
Buenos Días:
Estoy haciendo un pequeño aplicativo con dos bases de datos :
1.- bd_siga
2.-bd_espejo
he realizado un reporte en crystal report para las comisiones de los vendedores las dos bases de datos tienes los mismos procedimientos las mismas tablas es como una copia 1=2
ahora lo que me gustaría hacer es que ese reporte que realice en crystal report me funcione con las dos bases de datos, se que si se puede. pero nose como hacerlo.
porque al crear en reporte me pide que me conecte a una bd que solo me deja a una.
¿cual seria la solución para este tipo de funcion, estare a la espera de su acertada respuesta?.
y algo mas si no es abusar :
en un mismo reporte puedo mostrar el detalle o bien solo los totales de acuerdo lo que el usuario quiera verla.
buenas amigo quiero saber si pudiste resolver ya que tengo el mismo caso y lo comparti aqui tambien como una pregunta