Principales respuestas
Actualizar DataSet con los valores que hay en base de datos

Pregunta
-
Hola, a ver si por favor me podrían echar una mano, seguro que es una tontería pero me estoy volviendo loco.
Tengo un programa windows desarrollado en C# que genera unos informes rdlc cargado con reportViewer. A través del rdlc se ha generado automáticamente un DataSet donde le he indicado qué tablas tiene que cargar y el informe se carga perfectamente. Hasta aquí bien. No domino demasiado bien esta forma de leer offline por lo que confío que esté bien el código que se genera automáticamente...
El problema que tengo es que cuando posteriormente actualizo la base de datos desde otra parte del programa, el DataSet (y por ende el reportViewer) sigue teniendo los datos antiguos y no tiene en cuenta las actualizaciones efectuadas en la base de datos salvo que reinicie el programa.
Ya sé que tiene que ver que DataSet hace un tratamiento offline y no se actualiza solo, lo que querría hacer es reiniciar ese DataSet para que vuelva a coger los datos actualizados de la base de datos antes de abrir el reporte.
He probado con la propiedad Reset() del Dataset, con la Update(), GetData() y Fill() del TableAdapter y nada, siguen saliendo los mismos registros que cuando se inicia el programa, sin tener en cuenta los cambios.
Muchísimas gracias
miércoles, 26 de febrero de 2014 11:49
Respuestas
-
Ahora le doy al botón del programa y se abre un nuevo form con un reporte rdlc y me aparecen los registros "A","B" y "C"
pero ese dataset en que momento lo cargaste ? porque debiste hacerlo cuando presionaste el boton que abre el reporte
una duda la db access esta integrada en el proyecto ? si es asi cuando eliminas ese registro "C" lo haces en la db que se copia al \bin\Debug ? porque es alli donde el VS esta realizando las modificaciones ya que crea una copia cuando ejecutas
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Marcado como respuesta bracular miércoles, 26 de febrero de 2014 12:46
miércoles, 26 de febrero de 2014 12:37
Todas las respuestas
-
hola
pero el reporte lo lanzas en un form separado? porque si lo hicieras el usuario podrias cerrar ese form y volver arirlo con lo cual recargarias los datos ejecutando nuevamente la query y por consiguiente se verian los nuevos datos en el reporte
si el reportviewer los pones en el mismo form no pudiendo cerrarlo, podrias definir algun boton de refrescar el cual vuelve a ejecutar la query, recarga el dataset y le asigna esto al ReportDocument para asignarlo a reportviewer
a donde apunto es que la forma de actualizar es volviendo a consultar la db y recargando el dataset, para luego asignar una nueva instancia del reportdocument
tienes que volver a lanzar nuevamente el mismo codigo que usaste la primer vez para generar el reporte
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentinamiércoles, 26 de febrero de 2014 12:04 -
Hola, gracias por tu respuesta.
Te digo... y te pongo un ejemplo claro
Yo cargo el programa con una tabla en base de datos que tiene tres registros, "A","B" y "C".
- Abro el programa (sin abrir el reporte), a continuación con el programa abierto modifico la tabla directamente en access eliminando "C", quedando "A" y "B" en la base de datos.
- Ahora le doy al botón del programa y se abre un nuevo form con un reporte rdlc y me aparecen los registros "A","B" y "C" cuando en la base de datos sólo están "A" y "B". Para que me aparezcan sólo "A" y "B" tengo que reiniciar el programa.
El DataSet que manda los datos al reportViewer lo ha creado visual studio sólo con el asistente, por lo que no sé cuándo leches se crea ese DataSet, es como si se cargara al iniciar el programa. Lo que necesito saber es cómo puedo actualizar los datos de ese DataSet para que vuelva a leer los valores iniciales de la base de datos.
Mil gracias
miércoles, 26 de febrero de 2014 12:22 -
Ahora le doy al botón del programa y se abre un nuevo form con un reporte rdlc y me aparecen los registros "A","B" y "C"
pero ese dataset en que momento lo cargaste ? porque debiste hacerlo cuando presionaste el boton que abre el reporte
una duda la db access esta integrada en el proyecto ? si es asi cuando eliminas ese registro "C" lo haces en la db que se copia al \bin\Debug ? porque es alli donde el VS esta realizando las modificaciones ya que crea una copia cuando ejecutas
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Marcado como respuesta bracular miércoles, 26 de febrero de 2014 12:46
miércoles, 26 de febrero de 2014 12:37 -
Resuelto!
Muchísimas gracias por abrirme los ojos!
El problema estaba en que tengo integrada la base de datos en el proyecto pero tengo puesta una ruta fija para el acceso a la base de datos Access desde el programa, y el ReportViewer crea un DataSet con un "conectionString" con referencia al directorio de la aplicación, por lo que al abrir la aplicación desde Visual Studio en el programa se actualizaban los datos en una base de datos pero mostraba los datos de otra (en la carpeta Debug). Por ello al reiniciar la aplicación los datos aparecían bien...porque volvía a copiar la base de datos "modificada" en la carpeta Debug.
Mil gracias Leandro.
- Propuesto como respuesta CastanedaVE viernes, 9 de marzo de 2018 20:44
miércoles, 26 de febrero de 2014 12:52 -
MIL GRACIAS ME ACLARASTE LA DUDA QUE TENIA!! EXCELENTE LEANDRO EL MEJORjueves, 8 de marzo de 2018 19:50