Agrupar datos de un datagridview a otro

Vbnet_bcn espero estés bien, te escribo para pedirte que me ayudes con esto, te explico:
Tengo
Un formulario con dos datagridview en uno de ellos lo tengo lleno con
datos de una base de datos access, el cual tiene las siguientes tablas:
Fecha - numero documento - valor. El segundo datagridview esta vacío y
tiene estas columnas: FECHA - DESDE - HASTA - VALOR.
Lo que
Necesito es que con un botón me llene el segundo datagridview agrupando
por fecha todos los valores del datagridview 1, ejemplo:
Datagridview 1
Fecha - nro doc - valor
24-1-12 125 500
24-1-12 126 1000
25-1-12 127 800
25-1-12 128 300
25-1-12 129 200
* en el datagridview 2 debería mostrar esto:
Fecha - desde - hasta - valor
24-1-12 125 126 1500
25-1-12 127 129 1300
Ojala me puedas ayudar.

1 respuesta

Respuesta

Lo que quieres mostrar en el segundo gridview puedes sacarlo directamente de la base de datos con una consulta sql. En este caso sería:

SELECT FECHA, FIRST(NRO DOC) AS DESDE, LAST(NRO DOC) AS HASTA, SUM(VALOR) AS VALOR
FROM TABLA
GROUP BY FECHA

Evidentemente deberás cambiar los nombre de los campos por los reales, ya que como no sé cuales son he puesto los títulos de tu ejemplo. Además has de poner el nombre de la tabla correcta en el FROM.

Con el GROUP BY logras agrupar por línea todos los resultados que tengan el mismo valor del campo agrupado, que en este caso es la Fecha. Además con a función FIRST y LAST sacas el primer y último dato que es lo que quieres para las columnas DESDE y HASTA

En SQL en vez de FIRST y LAST es MIN y MAX por si algún día has de hacerlo en SQL.

muchísimas gracias por responder, me sirvió bastante tu ayuda, pero me quedan algunas dudas, por ejemplo la tabla de la base de datos, todos los campos son string, por lo tanto no funciona cuando busco el mínimo ni el máximo en el campo nro_doc, ¿como puedo hacerlo para que funcione?. lo otro en el campo de valores, cuando de ingresa un registro antes de almacenarlo le aplico una función la cual le coloca separador de miles al numero, pero al pasar la suma al nuevo datagrid no puedo aplicarle dicha función. como puedo hacer para que la suma de dichos valores luego me la muestre con separador de miles.

saludos y gracias nuevamente

Me alegro que le sirvió de ayuda, ya estás cerca de la solución final y seguro lo acabas consiguiendo.

Respecto lo de que los datos son en string, en SQL hay la función Cast que convierte una dato en un tipo de datos. Puedo probar de poner dentro del min y el max Cast(NRO DOC as INT), quedando finalmente así: MIN(CAST(NRO DOC AS INT)), a ver si así te funciona.

Aunque esta función es de SQL SERVER, imagino debe estar también en ACCESS o sino una función con otro nombre pero equivalente.

Respecto la función de formateo del importe ¿la pones en la misma sentencia SQL o la haces aparte en el código de programación?

gracias nuevamente por la pronta respuesta.

mira te explicare un poco de que se trata el trabajo que estoy haciendo para ver si me puedes ayudar un poco. tengo que hacer un mini programa de contabilidad, en el cual se registren las compras y ventas de diferentes empresas. en el programa el usuario debe poder tener acceso a informes de las compras y de las ventas y ademas poder tener el resumen del pago de impuesto mensual. tengo gran parte de esto hecho, pero tengo un poco de problemas en el diseño. el profesor que nos encargo este trabajo se fija mucho en el diseño por lo tanto me gustaría que me ayudaras también en el tema de diseño, ya que no soy muy bueno en eso. (por ejemplo necesito que los textbox cambie de color al tener el foco, que los datagrid tengan lineas de otro color, pero intercaladas. etc, todo esto hecho en código y lo mas reducido posible).

con respecto al formateo del importe lo hago en código de programación cada vez que se ingresa el valor en el textbox..

muchísimas gracias

saludos

disculpa que nuevamente te moleste pero necesito que me ayudes con otra problemática que tengo.

tengo un reporte hecho con crystal report, y la hoja necesariamente tiene que ser en forma vertical, el problema es que por la cantidad de columnas no me da el ancho de la hoja, existe la opción de hacer que las columnas ajusten su ancho al valor que tienen?? y ademas se puede ocultar las columnas que no tienen datos???, ojala me puedas ayudar con esto también gracias.

pd. con respecto a las pregunta anterior, me resulto lo que me dijiste pero no he logrado poder mostrar con separador de miles los valores de las columnas de valor.

saludos

Respecto al crystal report siento decirte que no tengo experiencia con este software con lo que no puedo ayudarte.

Respecto al formateo del total prueba a cambiar el SUM(VALOR) por CAST( SUM(VALOR) as MONEY.

no me ha resultado lo ultimo que me dices....sigue mostrándome los valores sin los puntos....

trate de hacerlo tomando los valores de esa columna del datag y aplicarle la función que tengo para separar los miles pero al querer nuevamente mostrarlas en el datag me sale un error que me dice que el valor no es de tipo double.

espero me puedas ayudar

gracias

He visto una posible solución a su problema, prueba a poner lo siguiente:

Format (SUM(VALOR), "Currency").

La anterior no funciono porque era para SQL que es lo que yo conozco, pero he buscado el equivalente para el SQL Access

Me gustaría saber si te sirvió la última información que te dí.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas