• problema con DataGridView en VB.NET

 #488609  por el_cantante
 15 Sep 2016, 16:55
Hola!
Necesitaría por favor un poco de ayuda con un DataGridView en VB.net .
Tengo un DataGridView1 con los datos de una query que recupero de un database en SQL Server.
La tabla esta compuesta por las siguientes columnas:

Articulo | Nombre | Fecha | Stock | Previsión | Saldo |
-----------------------------------------------------------------------------
111 | Art 1 |01/09/2016 | 100 | 30 | 70 |
111 | Art 1 |01/10/2016 | 70 | 20 | 50 |
222 | Art 2 |01/10/2016 | 200 | 50 | 150 |

Luego tengo un DataGridView2 con otras columnas mas, pero siempre relativas a los mismos artículos, que se encuentran en el DataGridView1.
Lo que necesitaría hacer es incorporar en una columna nueva del DataGridView2, el valor Máximo de la columna "Fecha", en base a cada articulo, cuando la columna "Saldo" es mayor a cero.
Alguna idea?? Yo estoy completamente perdido ...

Gracias!!
Saludos!
 #488618  por Neutrox
 15 Sep 2016, 21:13
Cómo no se exactamente que es lo que preguntas te respondo esto:

Si lo que pides es el tipo de consulta sería así

SELECT MAX(FECHA)
FROM NOMBRE_DE_LA_TABLA
WHERE SALDO > 0;

Esta es la consulta para que devuelva la fecha máxima teniendo el saldo mayor que 0
Si añades Group by artículos; te agrupará por artículos la fecha máxima teniendo el saldo mayor que 0

Si no es esto lo que pides I'm sorry compi;
 #488621  por el_cantante
 15 Sep 2016, 23:38
Gracias Neutrox por la respuesta, pero creo que no me explique bien. Yo ya tengo los datos en los dos DataGridView, mi problema es que no se como juntarlos.
En el DataGridView1 calculo el saldo de cada articulo a través de código VB.net, tuve que optar por esto ya que haciéndolo por medio de SQL el programa iba en timeout. Entonces me encuentro con el DataGridView1 que tiene el detalle de cada articulo, al cual tengo que obtener la ultima fecha en la que el saldo es positivo, y copiar este valor en el DataGridView2 (obviamente en el renglón del correspondiente articulo) .
La idea seria algo asi como utilizar los dos DataGridView como si fuesen tablas de un database, las cuales tendría que hacer un join a través de una query, pero no se como hacer esto en VB.net.
El dataGridView2 quedaría asi:

Articulo | Nombre | Fecha <-- (Esta es la fecha que obtengo del DataGridView1)
-----------------------------------
111 | Art 1 | 01/10/2016

La logica de tu query es correcta, solo que necesito aplicar eso pero en un DataGridView y copiar el resultado en otro DataGridView .
Espero haberme explicado mejor, muchas gracias por tu interés y ayuda!

Saludos!
 #488641  por Neutrox
 17 Sep 2016, 12:10
No soy experto en vbnet pero te indico como lo haría en java:

Crearía un ArrayList articulos;
Leería todo el DataGriView
Is art != exist entonces artículos.add(dato_a_ introducir)

// A este punto ya tenemos metido en el array list todos los nombres de artículos sin repetir

/** Ahora lo que haría seria leer la fila y utilizaría la lógica crearía una variable donde meter
el precio de artículo.
If (variable!=datoentrada) && (varible< datoentrada) ) then variable=datoentrada;
¿Qué hago con esto? pues quiero conseguir que variable mientras que lee en el DataGridView
se vaya actualizando si es menor o no igual.Obteneiendo así el valor máximo de cada artículo
**/

/** Este sería mi modesto algoritmo para solucionar tu problema desde mi perspectiva java
espero que sea de tu agrado y que te haya sido de utilidad **/

//¯\_(ツ)_/¯ ( ͡° ͜ʖ ͡°)

DBMS_OUPUT.PUT_LINE ('Saludos compi');
 #488657  por el_cantante
 18 Sep 2016, 13:20
No se si entendí bien... tal vez porque no soy tan experto en programación ... pero de todos modos, si consigo resolver el problema, lo publicare aquí por si puede ser útil a alguien mas en el futuro.
Muchas gracias Neutrox por tu ayuda

Saludos!