Foros del Web » Programación para mayores de 30 ;) » .NET »

Problema con OLE DB ADO para generar reporte de Crystal Report

Estas en el tema de Problema con OLE DB ADO para generar reporte de Crystal Report en el foro de .NET en Foros del Web. Saludos a la comunidad El problema que tengo es el siguiente: he realizado un reporte con Crystal Report, lo inicie en blanco luego hice la ...
  #1 (permalink)  
Antiguo 13/04/2009, 21:35
Avatar de Srkuen  
Fecha de Ingreso: abril-2008
Mensajes: 39
Antigüedad: 16 años
Puntos: 0
Problema con OLE DB ADO para generar reporte de Crystal Report

Saludos a la comunidad

El problema que tengo es el siguiente: he realizado un reporte con Crystal Report, lo inicie en blanco luego hice la conexión por medio de OLE DB ADO para poder extraer los campos del procedimiento almacena para poder extraer los datos de dicho reporte, luego en un CrystalReportViewer realizo la conexion al servidor, por medio de seguridad integrada, tal y como lo muestra el código siguiente:

Código:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.Data.SqlClient;
using System.Configuration;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.ReportSource;
using CrystalDecisions.Shared;
using CrystalDecisions.Windows.Forms;
using CrystalDecisions.CrystalReports.ViewerObjectModel;

namespace wfaInicio
{
    public partial class FrmReportView : Form
    {
        public FrmReportView()
        {
            Clases.Conexion c = new wfaInicio.Clases.Conexion();
            server = c.datasource1[1];
            database = c.initialcatalog1[1];
            integretesecurity = c.security1[1];
            InitializeComponent();
        }

        private ReportDocument reportDocument = new ReportDocument();
        private ParameterField paramField = new ParameterField();
        private ParameterFields paramFields = new ParameterFields();
        private ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();
        private string server;
        private string database;
        private string integretesecurity;

        private void FrmReportView_Load(object sender, EventArgs e)
        {
            cargarcrystalreport();
            VGI.tipoimpr = 0;
        }

        private void cargarcrystalreport()
        {
            verificar();
            seleccionorigenreporte();

            ConnectionInfo connectionInfo = new ConnectionInfo();
            connectionInfo.ServerName = server;
            connectionInfo.DatabaseName = database;
            connectionInfo.IntegratedSecurity = true;
            SetDBLogonForReport(connectionInfo);
        }

        private void SetDBLogonForReport(ConnectionInfo connectionInfo)
        {
            TableLogOnInfos tableLogOnInfos = CRVCustodyValue.LogOnInfo;
            foreach (TableLogOnInfo tableLogOnInfo in tableLogOnInfos)
            {
                tableLogOnInfo.ConnectionInfo = connectionInfo;
            }
        }

        private void seleccionorigenreporte()
        {
            if (VGI.tipoimpr == 1)
            {
                reportDocument.FileName = ".//..//..//Reportes//EntregaDocumentos.rpt";
            }
            if (VGI.tipoimpr == 2)
            {
                reportDocument.FileName = ".//..//..//Reportes//EgresoDocumentos.rpt"; 
            }
            if (VGI.tipoimpr == 3)
            {
                reportDocument.FileName = ".//..//..//Reportes//InventarioHipotecasCustodia.rpt"; 
            }
            if (VGI.tipoimpr == 4)
            {
                reportDocument.FileName = ".//..//..//Reportes//HipotecasPorCentroCosto.rpt"; 
            }
            if (VGI.tipoimpr == 5)
            {
                reportDocument.FileName = ".//..//..//Reportes//FichaPropiedad.rpt";
            }
            if (VGI.tipoimpr == 6)
            {
                reportDocument.FileName = ".//..//..//Reportes//HipotecasVencidas.rpt";
            }

            //Cargar el informe mediante el establecimiento del origen de datos
            CRVCustodyValue.ReportSource = reportDocument;
        }

        private void verificar()
        {
            if (VGI.tipoimpr == 1 || VGI.tipoimpr == 2)
            {
                agregarparametros();
            }
            if (VGI.tipoimpr == 3)
            {
                agregarparametros2();
            }
            if (VGI.tipoimpr == 4)
            {
                agregarparametros3();
            }
            if (VGI.tipoimpr == 5)
            {
                agregarparametros4();
            }
        }

        private void agregarparametros()
        {
            //Establecer instancias de parámetro de entrada 1- @requestid
            paramField.Name = "@requestid";

            //Pasar la variable con los datos 
            paramDiscreteValue.Value = VGI.valor;
            paramField.CurrentValues.Add(paramDiscreteValue);

            //Agregar el paramField a paramFields
            paramFields.Add(paramField);

            CRVCustodyValue.ParameterFieldInfo = paramFields;
        }

        private void agregarparametros2()
        {
            //Establecer instancias de parámetro de entrada 1- @seleccion
            paramField.Name = "@seleccion";

            //Pasar la variable con los datos 
            paramDiscreteValue.Value = VGI.valor;
            paramField.CurrentValues.Add(paramDiscreteValue);

            //Agregar el paramField a paramFields
            paramFields.Add(paramField);

            //Establecer instancias de parámetro de entrada 2- @datobuscar
            //Se deben construir nuevamente los objetos paramDiscreteValue y paramField
            paramField = new ParameterField();
            paramField.Name = "@datobuscar";
            paramDiscreteValue = new ParameterDiscreteValue();
            paramDiscreteValue.Value = VGI.datos;
            paramField.CurrentValues.Add(paramDiscreteValue);

            //Add the paramField to paramFields
            paramFields.Add(paramField);

            CRVCustodyValue.ParameterFieldInfo = paramFields;
        }

        private void agregarparametros3()
        {
            //Establecer instancias de parámetro de entrada 1- @seleccion
            paramField.Name = "@seleccion";

            //Pasar la variable con los datos 
            paramDiscreteValue.Value = VGI.valor;
            paramField.CurrentValues.Add(paramDiscreteValue);

            //Agregar el paramField a paramFields
            paramFields.Add(paramField);

            //Establecer instancias de parámetro de entrada 2- @datobuscar
            //Se deben construir nuevamente los objetos paramDiscreteValue y paramField
            paramField = new ParameterField();
            paramField.Name = "@datobuscar";
            paramDiscreteValue = new ParameterDiscreteValue();
            paramDiscreteValue.Value = VGI.datos;
            paramField.CurrentValues.Add(paramDiscreteValue);
            paramFields.Add(paramField);

            //Establecer instancias de parámetro de entrada 3- @fechainici
            //Se deben construir nuevamente los objetos paramDiscreteValue y paramField
            paramField = new ParameterField();
            paramField.Name = "@fechainici";
            paramDiscreteValue = new ParameterDiscreteValue();
            paramDiscreteValue.Value = VGI.fechainicio;
            paramField.CurrentValues.Add(paramDiscreteValue);
            paramFields.Add(paramField);

            //Establecer instancias de parámetro de entrada 4- @fechafin
            //Se deben construir nuevamente los objetos paramDiscreteValue y paramField
            paramField = new ParameterField();
            paramField.Name = "@fechafin";
            paramDiscreteValue = new ParameterDiscreteValue();
            paramDiscreteValue.Value = VGI.fechafin;
            paramField.CurrentValues.Add(paramDiscreteValue);

            //Agregar el paramField a paramFields
            paramFields.Add(paramField);

            CRVCustodyValue.ParameterFieldInfo = paramFields;
        }

        private void agregarparametros4()
        {
            //Establecer instancias de parámetro de entrada 1- @requestid
            paramField.Name = "@numfix";

            //Pasar la variable con los datos 
            paramDiscreteValue.Value = VGI.valor;
            paramField.CurrentValues.Add(paramDiscreteValue);

            //Agregar el paramField a paramFields
            paramFields.Add(paramField);

            CRVCustodyValue.ParameterFieldInfo = paramFields;
        }

        private void FrmReportView_FormClosing(object sender, FormClosingEventArgs e)
        {
            reportDocument.Close();
            CRVCustodyValue.Dispose();
            reportDocument.Dispose();
            FrmReportView frmrv1 = new FrmReportView();
            frmrv1.Close();
            frmrv1.Dispose();
        }
    }

    public class VGI
    {
        public static string valor = null;
        public static string datos = null;
        public static string fechainicio = null;
        public static string fechafin = null;
        public static int tipoimpr = 0;
    }
}
Los datos de conexión son proporcionado por una clase que esta a su vez los extrae de un archivo xml, donde se encuentra el nombre del servidor, el nombre de la base de datos y el tipo de seguridad integrada.

El problema esta en que a la hora de copiar la aplicación a otra maquina con otro servidor de SQL 2005 que por supuesto tiene diferente nombre, los reportes no se pueden genera y siempre me proporcionan el mensaje que se quieren conectar al servidor donde construi los reportes.

Alguien me podría ayudar a solventar este problema ya que creo que es el OLE DB ADO del procedimiento almacenado el que guarda el nombre del servidor y no quiere tomar los datos de los parametros que el paso.

De antemano muchas gracias por su ayuda.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:03.