Usuario
Como hacer un campo me permita usar campo en mutiples secciones en ReportViwer(.rdlc) MVC5 C#?

Pregunta
-
Buenos dias soy nuevo en este foro queria saber si podria ayudar con un problema que tengo bueno tengo el reportviwer que lo llamo de esta manera en el controlador de historial
public ActionResult ReporteRegistros() { // Arreglo para guardar las fechas seleccionadas en la vista // DateTime[] Fechas = {Convert.ToDateTime( DateTime.Now.Date.ToShortDateString()),Convert.ToDateTime( DateTime.Now.Date.ToShortDateString())}; DateTime[] Fechas = { DateTime.Today, DateTime.Today }; // Muestra la vista de Reporte return View(Fechas); } [HttpPost] public ActionResult ReporteRegistros(DateTime Fecha) { try { // Si fecha no es nula, realiza la consulta if (Fecha != null) { // Consulta de la BD de acuerdo a la fecha seleccionada List<Order> orders = db.Orders.Where(x => x.Fecha == Fecha).ToList(); foreach (Order v in orders) { // Consulta el nombre del producto y del cliente //v.Respuestas = db.Respuestas.Find(v.IdOrden).Resp; v.Modelo = db.Modeloes.Find(v.IdModelo).Nombre; // aqui es donde hago la consulta del campo lo que quiero es que me pueda mostrar varias respuestas que tengo en el mismo v.Respuesta = db.Respuestas.ToList().Find(x=>x.IdOrder==v.IdOrden).Resp; } // Configuramos el origen de datos del Informe (.rdlc) ReportViewer RptEmpleados = new ReportViewer(); // Objeto de reportviewer ReportDataSource rds = new ReportDataSource(); // Origen de datos rds.Value = orders; // Asigna la consulta de ventas como origen de datos rds.Name = "DsPreguntasIPQC"; // Este nombre debe coincidir con el del Informe RptEmpleados.LocalReport.DataSources.Add(rds); // Asignamos el origen de datos RptEmpleados.LocalReport.ReportPath = Server.MapPath("~/Reportes/AE01T-A2234-001-01 Check List MT.rdlc"); ViewBag.ReportViewer = RptEmpleados; // Pasamos el objeto de reporte a la vista. } } catch (Exception ex) { ViewBag.Mensaje = ex.Message; } return View(); }
En la parte del reportviwer el rdlc la expresion que uso para poder hacer que me aparezca es esta "=IIf(Fields!IdPregunta.Value = 13 ,Fields!Respuesta.Value,Fields!IdPregunta.Value)"
ya lo intente con diferentes condicinales y me sale #Error al momento ejecutar el reporte en la vista previa
Todas las respuestas
-
La expresión en sí misma es correcta, suponiendo que los nombres de los campos estén bien escritos y coincidan con las columnas que pasas en "orders".
Una posible causa del error es que la expresión esté escrita fuera del área de datos que tienes vinculada con el datasource "DsPreguntasIPQC" dentro del rdlc.
-
-
-
bueno me refiera a que si tenia que hacer otra cosa dentro del codigo para poder dividir las repuestas perdon por no hacerme expicar
como en esta parte la tengo que me lo busque asi no crees que me pueda afectar dentro del reporte.rdlc
// aqui es donde hago la consulta del campo lo que quiero es que me pueda mostrar varias respuestas que tengo en el mismo v.Respuesta = db.Respuestas.ToList().Find(x=>x.IdOrder==v.IdOrden).Resp;
Ademas estoy haciendo un pivot para que me muestre mis repuestas de columas a filas para que se muestre mejor pero no se si es necesario porque si es el codigo no es necesario el cambio que estoy haciendo
- Editado Megazx23 jueves, 27 de junio de 2019 15:04
-
No, nada de esto tiene nada que ver con el error que te sale.
En tu código puedes hacer todo lo que quieras: Filtros, Pivot, etc. Da igual. Al final, el resultado de eso es una tabla, con filas y columnas. Eso es lo que le pasas al reporte, y es lo único que ve el reporte: filas y columnas. No sabe nada acerca de cómo has llegado a obtener esas filas y columnas.
Los nombres y tipos de dichas columnas tienen que coincidir con los nombres y tipos de las columnas que definiste dentro del .rdlc para su origen de datos.
Los nombres de campos de la expresión que usas dentro del informe tienen que coincidir con los nombres de campos que se han definido para ese origen de datos dentro del informe.
Y la expresión tiene que estar definida dentro de un area de datos (lista, tabla, etc.) que esté vinculada con ese origen de datos.
-
-
No entiendo nada. ¿Qué quiere decir eso de "le puse como respuestas"? Y "por qué me los da así" ¿Qué quiere decir "así"?
Fíjate que te sale un error dentro del reporte. De cara a ese error lo único que importa es lo que hay dentro del reporte. No te fijes para nada (a estos efectos) en qué es lo que has hecho en tu código en C#. Solamente examina con el debugger la variable "orders" que le pasas cuando haces rds.Value = orders.
Si hay alguna duda, ponnos aquí una captura de pantalla mostrando los valores que te enseña el debugger cuando preguntas por el valor de la variable en tiempo de ejecución. Las columnas que tengan los registros que hay ahí tienen que coincidir con las que use el informe. Si no están ahí, no hay ninguna manera de que el informe pueda "adivinarlas" o "absorberlas" desde tu progama.