none
Falta un valor en el parametro cedula RRS feed

  • Pregunta

  • Saludos estoy realizando un reporte para una tabla que se llama prestamo y le estoy enviando algunos parametros pero despues de corregir algunos errores me sale esto y lo he intentado todo y no he podido resolver el problema

    yy estos son los parametros que le envio

    y

    miércoles, 6 de diciembre de 2017 19:35

Respuestas

  • Errr... Pensé que sería absolutamente evidente, pero aparentemente no lo es...

    No se trataba de ver el "título". Hay que pinchar en la flechita para desplegar los detalles, y luego seguir pinchando en las partes internas, principalmente en el Inner Exception, hasta que se llegue a algún sitio donde se vean los detalles de la excepción.

    • Marcado como respuesta Leonel Pimentel viernes, 8 de diciembre de 2017 15:03
    viernes, 8 de diciembre de 2017 14:12
    Moderador

Todas las respuestas

  • No se ve el código que usas para llamar al reporte, pero por el mensaje de error que sale, casi seguro que no estás pasando la Cédula correctamente cuando metes el valor en el ReportParameters.

    Revisa no sea que haya algún error muy tonto, como por ejemplo que sel lo estés pasando como "Cédula" (con acento) mientras que en el Report está definido como "Cedula" (sin acento), o algo por el estilo.

    Si ves que no lo resuelves, ponnos aquí la parte del código donde rellenas los ReportParameters, así como la llamada al reporte, a ver si somos capaces de detectar el error.

    jueves, 7 de diciembre de 2017 9:37
    Moderador
  •  public FrmReportesolicitudprestamo(string Cedula, string Cliente, string Monto, string Garante, string CedulaGarante, string ID, string CargoGarante)
            {
                InitializeComponent();

                // TODO: esta línea de código carga datos en la tabla 'DatasetPrincipal.Prestamos' Puede moverla o quitarla según sea necesario.
                this.PrestamosTableAdapter.Fill(this.DatasetPrincipal.Prestamos);
                // TODO: esta línea de código carga datos en la tabla 'DatasetPrincipal.Prestamos' Puede moverla o quitarla según sea necesario.
                this.PrestamosTableAdapter.Fill(this.DatasetPrincipal.Prestamos);
                string hoy = DateTime.Now.ToShortDateString();
                ReportParameter[] parameters = new ReportParameter[7];
                //Establecemos el valor de los parámetros
                parameters[0] = new ReportParameter("Cedula", Cedula);
                parameters[1] = new ReportParameter("Cliente", Cliente);
                parameters[2] = new ReportParameter("MontoSolicitado", Monto);
                parameters[3] = new ReportParameter("ID", ID);
                parameters[4] = new ReportParameter("Garante", Garante);
                parameters[5] = new ReportParameter("CedulaGarante", CedulaGarante);
                parameters[6] = new ReportParameter("CargoGarante", CargoGarante);
                //this.reportViewer1.ServerReport.SetParameters(parameters);
                this.reportViewer1.RefreshReport();
            }

    private void BtnImprimir_Click(object sender, EventArgs e)
            {
                Reportes.FrmReportesolicitudprestamo Repor = new Reportes.FrmReportesolicitudprestamo(TxtCedula.Text, TxtMonto.Text, TxtNombre.Text, TxtNombreGarante.Text, TxtCedulaGarante.Text, TxtCargoGarante.Text, "ID");
                Repor.ShowDialog();
            }
        }

    jueves, 7 de diciembre de 2017 13:32
  • Pues así a simple vista no se ve nada incorrecto. El parámetro Cedula recibe el valor a travás del constructor del form, que a su vez lo recibe del TxtCedula (que me imagino que ya habrás verificado que no esté vacío). No hay razón para que el report se queje de que el parámetro está vacío. Como comprobación adicional, podrías poner un punto de ruptura para el debugger y validar en tiempo de ejecución que el dato llega al parámetro, pero casi seguro que vas a encontrar que llega correctamente.

    Una sugerencia que yo haría es que la asignación de valores y la llamada a RefreshReport() la hagas en el Form_Load en lugar de hacerla en el constructor. Aunque en ese punto el InitializeComponent ya ha instanciado el componente, es posible que tenga alguna dependencia que lo haga fallar si el formulario no se ha cargado todavia.

    jueves, 7 de diciembre de 2017 17:03
    Moderador
  •  //this.reportViewer1.ServerReport.SetParameters(parameters); me he fijado que si le quito el comentario a este codigo me dice un error el cual dice no se ha especificado el origen de la definicion de informe
    jueves, 7 de diciembre de 2017 17:58
  • ¡Ah! Si de verdad lo tienes entre comentarios en el código real, entonces esa es la razón de que se queje de que le falta el parámetro. Esa instrucción que has comentado es la que efectúa el paso de los parámetros al reporte. Las anteriores simplemente construyen en memoria el array de parámetros, pero al Report no le llega si no ejecutas el SetParameters.

    Ojo con donde pone "ServerReport", si el reporte es local hay que poner "LocalReport". De lo contrario sale el error que estás viendo quejándose de que no le has indicado a qué servidor tiene que acudir para emitir el informe.

    jueves, 7 de diciembre de 2017 19:58
    Moderador
  • Este es el error que da cuando lo cambio

    jueves, 7 de diciembre de 2017 23:23
  • Pincha en "Ver Detalle", a ver qué nos aclara el InnerException.
    viernes, 8 de diciembre de 2017 7:25
    Moderador
  • viernes, 8 de diciembre de 2017 12:30
  • Errr... Pensé que sería absolutamente evidente, pero aparentemente no lo es...

    No se trataba de ver el "título". Hay que pinchar en la flechita para desplegar los detalles, y luego seguir pinchando en las partes internas, principalmente en el Inner Exception, hasta que se llegue a algún sitio donde se vean los detalles de la excepción.

    • Marcado como respuesta Leonel Pimentel viernes, 8 de diciembre de 2017 15:03
    viernes, 8 de diciembre de 2017 14:12
    Moderador
  • viernes, 8 de diciembre de 2017 14:53
  • Gracias, ya pude solucionar el problema, pero ahora tengo una inquietud por si me puedes ayudar, el problema es que ahora me esta trayendo los registros duplicados y no se a que se debe, adjunto una foto para que veas

    • Editado Leonel Pimentel viernes, 8 de diciembre de 2017 16:18 Arreglar mejor
    viernes, 8 de diciembre de 2017 15:24
  • Casi seguro que esto es un problema de la consulta SQL con la que se cargan los datos; es muy raro que sea un problema de la definición del informe. Para comprobarlo, pon un punto de ruptura antes de pasarle el datatable al informe, y examina el contenido del datatable en ese momento. Probablemente encontrarás que los registros se los estás pasando ya duplicados.
    viernes, 8 de diciembre de 2017 19:24
    Moderador