none
instanciar cadena para el crystal report. RRS feed

  • Pregunta

  • Quisiera saber lo siguiente;

    Resulta que he utilizado Crystal R. para trabajar con mis informes, Ok... todo bien hasta ahí. La situación es que al momento de generar el Setup de mi proyecto. Cuando quiero instalar el software en otra PC pues resulta que me hes necesario cambiar el nombre de la PC y colocarlo igual como esta en la mia.

    Quisiera saber como instanciar que mi cadena de conexion (para el crystal report) la hale de mi App.Config.

    el archivo App.Config me funciona perfectamente, el resto del proyecto me funciona perfectamente, pero la situación es que  necesito ir propiedades de mi pc/cambiar el nombre el nombre de la PC.

    sábado, 2 de diciembre de 2017 15:20

Respuestas

  • Hola

    Por lo que entiendo tu pc hace de servidor(la base de datos esta alojada en tu pc), podrías probar poniendo la IP de tu maquina como nombre de servidor.

    Connection string

    Saludos


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    sábado, 2 de diciembre de 2017 15:50
  • Hola

    Esto es porque al momento de crear la conexion de los datos en el crystal report se guarda con el nombre de de la PC en la cual se esta trabajando el proyecto en Visual Studio. Lo que deseo es obtener la conexion mediante mi archivo app.config o algun otro que sea posible. 

    Desconozco como es que pasas los datos de conexión a tu reportes, pero podrías usar lo siguiente.

    private void SetDBLogonForReport(ConnectionInfo connectionInfo, ReportDocument rptDocument)
            {
                Tables myTables = rptDocument.Database.Tables;
                foreach (CrystalDecisions.CrystalReports.Engine.Table myTable in myTables)
                {
                    TableLogOnInfo myTableLogonInfo = myTable.LogOnInfo;
                    myTableLogonInfo.ConnectionInfo = connectionInfo;
                    myTable.ApplyLogOnInfo(myTableLogonInfo);
                }
            }
    
    private void Imprimir()
            {
                string FilePath = @"D:\ReportesRestaurant\EnviarCocina.rpt";
                //ReportDocument rptListaPersonal = new ReportDocument();
    
                rptListaPersonal.Load(FilePath);
                DataTable tablaDatos = Pedido.DTProcesarRT(6, "", "", Helper.IdRows, "", "", "", "");
    
                rptListaPersonal.SetDataSource(tablaDatos);
    
                frmReportes frm = new frmReportes();
    
                frm.CrystalReportViewer.ReportSource = rptListaPersonal;
                frm.CrystalReportViewer.Dock = DockStyle.Fill;
    
                ConnectionInfo cn = new ConnectionInfo();
                cn.ServerName = ".";
                cn.DatabaseName = "MyDataBase";
                cn.UserID = "sa";
                cn.Password = "xyz";
                cn.Type = ConnectionInfoType.SQL;
                SetDBLogonForReport(cn, rptListaPersonal);
                frm.CrystalReportViewer.Refresh();
                frm.Text = "Probando";
                frm.Show();
            }

    Es un código de ejemplo modifícalo según tus necesidades.

    Saludos!


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú




    sábado, 2 de diciembre de 2017 20:44

Todas las respuestas

  • Hola

    Por lo que entiendo tu pc hace de servidor(la base de datos esta alojada en tu pc), podrías probar poniendo la IP de tu maquina como nombre de servidor.

    Connection string

    Saludos


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    sábado, 2 de diciembre de 2017 15:50
  • Saludos Pedro, te comento. instanciar la conexion a la base de datos via IP no es el problema, el problema es que al momento de instalar el software en la PC del cliente, me es necesario cambiar el nombre de su PC y colocarlo igual a la mia. Esto es porque al momento de crear la conexion de los datos en el crystal report se guarda con el nombre de de la PC en la cual se esta trabajando el proyecto en Visual Studio. Lo que deseo es obtener la conexion mediante mi archivo app.config o algun otro que sea posible. Que no sea necesario cambiar el nombre de la pc del cliente, ejemplo: mi pc tiene un nombre Dewin y la del cliente Juan, pues tengo que ir a propiedades del PC y cambiar el nombre de Juan a Dewin.
    sábado, 2 de diciembre de 2017 16:10
  • Hola

    Esto es porque al momento de crear la conexion de los datos en el crystal report se guarda con el nombre de de la PC en la cual se esta trabajando el proyecto en Visual Studio. Lo que deseo es obtener la conexion mediante mi archivo app.config o algun otro que sea posible. 

    Desconozco como es que pasas los datos de conexión a tu reportes, pero podrías usar lo siguiente.

    private void SetDBLogonForReport(ConnectionInfo connectionInfo, ReportDocument rptDocument)
            {
                Tables myTables = rptDocument.Database.Tables;
                foreach (CrystalDecisions.CrystalReports.Engine.Table myTable in myTables)
                {
                    TableLogOnInfo myTableLogonInfo = myTable.LogOnInfo;
                    myTableLogonInfo.ConnectionInfo = connectionInfo;
                    myTable.ApplyLogOnInfo(myTableLogonInfo);
                }
            }
    
    private void Imprimir()
            {
                string FilePath = @"D:\ReportesRestaurant\EnviarCocina.rpt";
                //ReportDocument rptListaPersonal = new ReportDocument();
    
                rptListaPersonal.Load(FilePath);
                DataTable tablaDatos = Pedido.DTProcesarRT(6, "", "", Helper.IdRows, "", "", "", "");
    
                rptListaPersonal.SetDataSource(tablaDatos);
    
                frmReportes frm = new frmReportes();
    
                frm.CrystalReportViewer.ReportSource = rptListaPersonal;
                frm.CrystalReportViewer.Dock = DockStyle.Fill;
    
                ConnectionInfo cn = new ConnectionInfo();
                cn.ServerName = ".";
                cn.DatabaseName = "MyDataBase";
                cn.UserID = "sa";
                cn.Password = "xyz";
                cn.Type = ConnectionInfoType.SQL;
                SetDBLogonForReport(cn, rptListaPersonal);
                frm.CrystalReportViewer.Refresh();
                frm.Text = "Probando";
                frm.Show();
            }

    Es un código de ejemplo modifícalo según tus necesidades.

    Saludos!


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú




    sábado, 2 de diciembre de 2017 20:44