none
crystal report - usar un reporte para dos bases de datos RRS feed

  • 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#)
    sábado, 1 de septiembre de 2012 14:18

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
    lunes, 10 de septiembre de 2012 2:49

Todas las respuestas

  • Create una vista en la base de datos, luego asigna esta vista al reporte

    Descripción de vistas

    Vistas


    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
    sábado, 1 de septiembre de 2012 14:49
  • Create una vista en la base de datos, luego asigna esta vista al reporte

    Descripción de vistas

    Vistas


    Angel R. Jimenez G.
    Software Development
    Santo Domingo
    Republica Dominicana
    Blog

    Amigo 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 . 

    sábado, 1 de septiembre de 2012 16:57
  • 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

    domingo, 2 de septiembre de 2012 1:26
  • 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

    domingo, 2 de septiembre de 2012 18:15
  • 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
    domingo, 2 de septiembre de 2012 19:31
  • 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

    hola 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.

     
    lunes, 3 de septiembre de 2012 14:56
  • 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

    lunes, 3 de septiembre de 2012 20:41
  • 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
    jueves, 6 de septiembre de 2012 12:37
  • 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
    lunes, 10 de septiembre de 2012 2:49
  • 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
    miércoles, 9 de mayo de 2018 21:06