Visual Basic - Suma de facturas con distinta Fecha

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

Suma de facturas con distinta Fecha

Publicado por Adolfo (117 intervenciones) el 13/01/2008 23:16:03
Tengo el siguiente codigo:

Do While Not .EOF And Year(!Fecha) <= Year(CBCalendario.Value) And Month(!Fecha) <= Month(CBCalendario.Value) And Day(!Fecha) <= Day(CBCalendario.Value)

VarTotalFacturas = VarTotalFacturas + !TotalFacturas
VarTotalVenta = VarTotalVenta + !TotalDiario
VarImpuestoVentas = VarImpuestoVentas + !ImpuestoV
.MoveNext
If .EOF Then
Exit Do
End If
Loop

Si estoy por ejemplo sumando las facturas de la semana que van del 30 de Setimbre (30/09/2007) al 6 de Octubre (06/10/2007), el sistema se brinca el Do While in no entra al siclo, lo cual me deja los totales en 0.

El valor que le doy a CBCalendario.Value es (06/10/2007) para que me busque todas las facturas nenores o iguales (<=) a esta fecha.

Pero Si elimino el registro correspondiente al dia 30/09/2007, el programa entra al siclo y funciona, no comprendo por que no entra al siclo si existe un registro con la fecha 30/09/2007?

Cualquier ayuda sera agradecida.

Adolfo.
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
sin imagen de perfil

RE:Suma de facturas con distinta Fecha

Publicado por Adolfo (117 intervenciones) el 17/01/2008 03:18:57
Hola Ivan,

Gracias por la primera sugerencia, ya logre arreglar el problema.
Sinembargo no he podido encotrar como debo modificar mi codigo para adaptarlo como to lo haces en la segunda sugerencia que me diste, por eso aqui te mando el codigo completo desde que abro la base de datos asta the muestra los totales en pantalla, para ver si me puedes indicar de una forma más ilustrativa como debo modificar el codigo para hacerlo con sólo una linea como tu dices:

Set VarBDFacturacion = Workspaces(0).OpenDatabase("Z:BDFacturacion.mdb")
'Abra la base de datos 'BDFacturacion.MDB'.

Set VarTBCierreDiario = VarBDFacturacion.OpenRecordset("SELECT * FROM TBCierreDiario", dbOpenDynaset)

With VarTBCierreDiario
Do While Not .EOF And Year(!Fecha) <= Year(CBCalendario.Value) And Month(!Fecha) <= Month(CBCalendario.Value) And Day(!Fecha) <= Day(CBCalendario.Value) Or Year(!Fecha) <= Year(CBCalendario.Value) And Month(!Fecha) < Month(CBCalendario.Value) And Day(!Fecha) > Day(CBCalendario.Value) Or Year(!Fecha) < Year(CBCalendario.Value) And Month(!Fecha) > Month(CBCalendario.Value) And Day(!Fecha) > Day(CBCalendario.Value)
VarTotalFacturas = VarTotalFacturas + !TotalFacturas
VarTotalVenta = VarTotalVenta + !TotalDiario
VarImpuestoVentas = VarImpuestoVentas + !ImpuestoV
.MoveNext
If .EOF Then
Exit Do
End If
Loop
VarTotalFacturado = VarTotalVenta + VarImpuestoVentas
LblTotalFacturas.Caption = Format(VarTotalFacturas, "###,###")
VarTotalVenta = VarTotalVenta '+ VarImpuestoVentas
LblTotalVenta.Caption = Format(VarTotalVenta, "##,###,###.00")
LblImpuestoVentas.Caption = Format(VarImpuestoVentas, "##,###,###.00")
LblTotalFacturado.Caption = Format(VarTotalFacturado, "##,###,###.00")
End With

La linea que tu dices es:
SELECT Sum(Campo1) As TotalVenta, Sum(Campo2) As TotalImpuesto... WHERE Fecha BETWEEN .. etc

Pero no entiendo donde exactamente debo colocarla. Pues trate de colocarla despues de Do While Not .EOF pero me genera un error en SELECT.
Trate de colocarla en SELECT * FROM
Pero tambien me genera un error.

Si me puedes ayudar te lo agradeceria mucho, quisiera poder educir ese monton de lineas a sólo unas cuantas como tu lo haces.

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