Visual Basic - Sumar determinadas columnas de un listview

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

Sumar determinadas columnas de un listview

Publicado por Brian (9 intervenciones) el 19/09/2014 21:14:24
Hola a todos, tengo un problemita para terminar una aplicacion.
Estoy trabajando con una base de datos acces, y un list view con cuatro columnas.
La primer columa es autonumerica, la segunda tiene un articulo, la tercera el precio, y la cuarta la fecha que se registro. Ej:

1 | Remera | $300 | 19/09/2014

Cree un boton que suma la tercer columna entera y me da el resultado total de las ventas con este codigo:

1
2
3
4
5
6
7
8
9
Private Function Sumar() As Double
 
Dim i As Integer
'Recorre todos los items y para sumar los SubItems
For i = 1 To LV2.ListItems.Count
Sumar = Sumar + CDbl(LV2.ListItems(i).SubItems(2))
Next i
 
End Function

Y lo llamo con:
1
2
3
4
5
Private Sub Command1_Click()
'Ejecuta la función que suma todos los datos de la columna 2
Label1.Caption = Sumar
MsgBox FormatCurrency(Sumar), vbInformation, "Total"
End Sub

Lo que me faltaria hacer es poder elegir la fecha cada dia y que sume los registros de ese dia, y tambien lo mismo para que sume el total de registros por mes.

Espero que puedan ayudarme, este año empece a estudiar analista de sistemas y llegue bastante lejos por mi cuenta, mas de lo que me enseñaron en la facultad, por eso no se como resolver este problema. Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de manuel
Val: 22
Ha aumentado su posición en 2 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Sumar determinadas columnas de un listview

Publicado por manuel (13 intervenciones) el 19/09/2014 21:32:39
Hombre si ya te funciona y solo quieres filtrar por el día actual pues es simplemente poner una pequeña condición a tu código actual:

1
2
3
4
5
For i = 1 To LV2.ListItems.Count
    if String.compare(LV2.ListItems(i).SubItems(3).toString(), Datetime.Now().ToShortDateString())=0 then
          Sumar = Sumar + CDbl(LV2.ListItems(i).SubItems(2))
    End If
Next i

Con eso miras si es la fecha de hoy... para el caso de del mes actual, pues coges la fecha corta con Datetime.now().toshortDateString() y lo guardas en una variable string y con las funciones de cadena eliminas el día y después solo tienes que mirar que mes es y así comparar entre el primer día del mes (1/mes y día obtenido) y el último del mes (que si quieres simplificar, pues usas 31 siempre y así no tienes que mirar en que acaba ese mes y no vas a tener problemas)... y aplicar eso a la condición... al final casi lo mismo.

Datetime.Now().ToShortDateString() : devuelve la fecha de hoy en formato corto, por ej: 19/09/2014

Espero haberte ayudado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Sumar determinadas columnas de un listview

Publicado por Brian (9 intervenciones) el 19/09/2014 22:19:24
Gracias manuel, en este momento no tengo mi pc, ni bien llegue a casa lo pruebo. Te hago otra consulta:
En ese caso me contaria los del dia actual, como podria hacer para yo poder elegir el dia asi saber cuanto vendi dias anteriores.

EDITO:
ME DA ERROR DE SINTAXIS ESTE CODIGO:
if String.compare(LV2.ListItems(i).SubItems(3).toString(), Datetime.Now().ToShortDateString())=0 then
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de manuel
Val: 22
Ha aumentado su posición en 2 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Sumar determinadas columnas de un listview

Publicado por manuel (13 intervenciones) el 20/09/2014 12:00:25
De nada.

En cuanto a lo segundo, ¿Qué versión de VB.NET estás usando o aun estás con VB 6? porque si es el segundo caso no funciona, String.compare es para .NET solo. Pero no es necesario usar esa función, incluso en VB 6 podrías usar instr (la famosa instring)

En cuanto a la otra pregunta, pues si quieres un día distinto, pues simplemente le pones un textbox, o se lo preguntas al usuario con un inputbox()... lo único que tienes que tener cuidado es que el formato sea coincidente con el de fecha corta (como las fechas que tu usas) y nada más.

Bibliografía:

String.compare: http://msdn.microsoft.com/es-es/library/system.string.compare(v=vs.110).aspx
Inputbox: http://msdn.microsoft.com/es-es/library/6z0ak68w(v=vs.90).aspx
Instr: http://msdn.microsoft.com/es-es/library/8460tsh1(v=vs.90).aspx

Hasta luego
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Sumar determinadas columnas de un listview

Publicado por Brian (9 intervenciones) el 20/09/2014 16:17:37
Claro Manuel lo que me explicas es exactamente lo que necesito, el problema es que estoy usando VB6. Podrias pasarme el codigo ? GRACIAS !
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de manuel
Val: 22
Ha aumentado su posición en 2 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Sumar determinadas columnas de un listview

Publicado por manuel (13 intervenciones) el 23/09/2014 10:39:31
En Visual Basic 6 no necesitas complicarte tanto la vida, una comparación de cadenas puedes hacerlo con:

cadena1=cadena2

hasta luego
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar