Funcion DSum con criterio de fecha

Estoy realizando un proyecto, el cual consiste en registar las ventas que se llevan acabo diariamente,

Quiero sumar solo el campo monto de la tabla VentasT pero que estas se sumen por dia, el resultado quiero que aparesca en DetallesT en el campo Ventas

Lo que se encuentra en las tablas todo esta introducido manualmente y quiero que se automatice la parte de ventas.

Use la duncion Dsum, pero me suma todo lo que esta registrado en el campo Monto sin respetar las fechas.

Encuento al criterio es el que no he podido realizar, realmente no se mucho de access soy nueva en esto.

Espero y me puedan ayudar, se los voy a agradecer muchos.

1 respuesta

Respuesta
2

Una solución sencilla:

1º/ Crea una consulta de totales sobre la tabla VentasT, con los campos Monto (agrupado en Suma) y el campo Fecha

Con eso tendrás las ventas totales de cada día

2º/ Crea una consulta con la tabla DetallesT y la consulta anterior, y relaciones ambas tablas por el campo fecha.

Debiera funcionarte.

Si quieres usar DSuma(), sería algo así : DSuma("Monto","VentasT","Fecha=#" & [Fecha] & "#")

Un saludo.


¡Gracias! Sveinbjorn El rojo

Lo pondre en practica, espero y me resulte.

Hola de nuevo..

ya realice las consulta, y son estas 

pero al querer ejecutarla o abrir el formulario de movimientos o detalles aparece esto

De las misma manera si coloco la funcion DSuma.

Que es lo que puedo hacer en este caso

En la consulta pon el campo Fecha de Consulta1, o ponle el nombre de la tabla antes del campo: DetallesT. Fecha

También en la primera consulta puedes usar un Alias para cambiar el nombre del campo fecha

Realize las correcciones en las consultas y me resulto gracias..

tengo otro pequeño problemita , lo que quiero que realice la consulta es que me sume todos los registros del dia (Suma de monto)y que no me aparescan tdos los registros como en la imagen

ya que al obtener la suma total de los registros por dia quiero que vallan se vinculen al formulario DetallesT en el campo Ventas

Que debo agregar o quitar ..

Espero y me puedan ayudar, disculpas por tantas molestias

Por la imagen de los resultados de la Consulta2, o tienes mal la relación entre las tablas/consultas de las que obtiene los datos, o tienes mal diseñada la consulta de totales. Es difícil de decir sin saber qué es lo que tienes...

Me pudieras brindar un correo, para poder mandarte la base y me puedas ayudar.

[email protected]

Avísame por aqui cuando la envíes.

ya le envie la base de datos por correo

No me llegó nada...

Envíala comprimida en rar o zip

si ya lo volvia a reenviar, espero y si te llegue esta vez

Ya vi el problema, Laura:

En tu tabla VentasT, en el campo fecha no almacenas una fecha, sino una fecha y hora (por el valor predeterminado Ahora() que le tienes). Eso significa que la consulta de totales (Consulta1) no puede agrupar por un día concreto, porque cada registro tiene un día y hora únicos. Y por ese motivo tampoco te funciona el DSuma().

Soluciones, tienes dos:

1º/ Crear un nuevo campo que coja solo la fecha y agrupar por ese campo como en Consulta 1 y luego usarlo para montar la consulta final (Consulta2)

2º/ Si no necesitas la hora, actualizar todos los valores de la tabla y modificar el valor predeterminado, cambiando Ahora() por Fecha().

Para modificar los valores de la tabla a solo fecha, puedes hacerlo con esta consulta (pégala en la vista SQL del editor de consultas):

UPDATE VentasT SET VentasT.[Fecha] = Format([Fecha],"dd/mm/yyyy")
WHERE (((VentasT.[Id])=[Id]));

Un saludo.


¡Gracias! 

Te agradesco mucho por la ayuda que me brindaste para poder realizar mi proyecto mil garcias, Dios te bendiga ...

hola de nuevo ...

me pudieras ayudar en esto ultimo por favor...

quiero restar y sumar estos campos :

Ventas + Posdeposito - retiro que se encuentran en el formulario DetallesT.

En un cuadro de texto:

=Ventas + Posdeposito - retiro

si ya coloque en el cuadro de texto lo mismo pero no me suma lo anterior o lo que se va acumulando..

lo que quiero es que todo se calcule automaticamente , solo que introdusca manualmente  los datos del deposito y posdeposito, los demas campos sean calculados automaticamente

ventas = a la suma de todas las ventas realizadas

saldo= a la resta de las ventas menos el deposito

Bote= suma de las ventas mas el posdeposito menos el retiro que se haga

inserte un codigo que me hace todos los calculos pero tengo me introducir manualmente las ventas lo cual no quiero que haga ya que cada que quiero ver cuanto tengo en bote tengo que  sumar e introducir manualmente el codigo que puese es el siguiente:

(Este codigo lo saque de ejemplo que vi en internet solo modifique y agregue algunas cosas paralas necesidades que tenia  mi proyecto)

Private Sub BotónDeNavegación28_Click()
        'Declaramos las variables
    Dim rst As DAO.Recordset
    Dim vDep As Currency, vVts As Currency
    Dim vSaldo As Currency
        Dim PDep As Currency, vRtro As Currency
    Dim vBote As Currency
    Dim miSql As String
        'Creamos la consulta para ordenar  por fecha
    miSql = "SELECT * FROM DetallesT ORDER BY DetallesT.Fecha"
        'Inicializamos vSaldo
    vSaldo = 0
        'Creamos el recordset sobre la SQL
    Set rst = CurrentDb.OpenRecordset(miSql)
        'Si no hubiera registros saltamos a Salida
    If rst.RecordCount = 0 Then GoTo Salida
        'Iniciamos el proceso de actualización de [Saldo]
    With rst
        .MoveFirst
        Do Until .EOF
                'Cogemos el valor del ingreso. Si no hay valor hacemos que el valor por defecto sea cero
            vDep = Nz(.Fields("TDeposito").Value, 0)
            vVts = Nz(.Fields("Ventas").Value, 0)
                'Calculamos el saldo del movimiento
            vSaldo = vSaldo + vDep - vVts
            'Escribimos dicho valor en la tabla
            .Edit
            .Fields("Saldo").Value = vSaldo
            .Update
            vPDep = Nz(.Fields("Posdeposito").Value, 0)
            vVts = Nz(.Fields("Ventas").Value, 0)
            vRtro = Nz(.Fields("Retiro").Value, 0)
            vBote = vBote + vPDep + vVts - vRtro
             .Edit
            .Fields("Bote").Value = vBote
            .Update
                'Nos movemos al siguiente registro
            .MoveNext
        Loop
    End With
        'Cerramos el formulario actual
    DoCmd.Close acForm, Me.Name
        'Abrimos DetallesT con la información actualizada en vista sólo lectura
    DoCmd.OpenForm "DetallesT", , , , acFormReadOnly
Salida:
        'Cerramos conexiones y liberamos memoria
    rst.Close
    Set rst = Nothing
End Sub

Tu lo que quieres no es hacer esa imple operación que dices (quiero restar y sumar estos campos :

Ventas + Posdeposito - retiro que se encuentran en el formulario DetallesT.), sino que quieres hacerlo con los acumulados, que es muy distinto.

Mira estos ejemplos, a ver si te orientan:

http://siliconproject.com.ar/neckkito/index.php/ejemplos-explicados/todos/95-ejemplos-explicados/ejemplos-de-codigo/133-contador-tipo-saldo 

http://siliconproject.com.ar/neckkito/index.php/ejemplos-explicados/todos/87-ejemplos-explicados/ejemplos-de-consultas/281-contador-tipo-saldo-2 

En el foro nksvaccessolutions también se trató este tema en alguna ocasión:

http://nksvaccessolutions.com/Foro/viewtopic.php?f=7&t=285&p=1899#p1899 

http://nksvaccessolutions.com/Foro/viewtopic.php?f=7&t=389&p=2518#p2518 

Saludos!


gracias por los enlaces me sirvieron mucho

algunas cosas ya las tenia, pero igual me fue de gran ayuda toda la informacion y se agradece-

El codigo que tiene la base calcula a partir de los datos que tiene la taba DetallesT, pero el campo SumaDeMonto no se encuentra en la tabla, y pues aprovechando que se suman gracias a la consulta quisiera ver la manera en el que el resultado (SumaDeMonto) se sume con los campos posdeposito - Retiro.

Espero  halla la posibilidad de poder mandarte la base de datos actualizada para que veas lo que tengo y ver si se puede hacer algo o no.

De antemano gracias por toda la ayuda brindada, saludos

Tienes mi correo, así que envía cuando quieras. Cuando tenga un rato miro y veo qué se puede hacer.

No recuerdo como era tu BD, pero envíame solo los elementos que intervienen en esta pregunta (tablas, consultas...) para que me sea más sencillo identificar los elementos.

listo ya  te he enviado la BD...

Saludos

A ver si esto es lo que quieres, porque no lo tengo claro:

En tu consulta DTelCel añade un campo con el nombre que quieras y esta expresión:

DSuma("[Ventas]";"DetallesTelcel";"Id<=" & [Id])+DSuma("[Posdeposito]";"DetallesTelcel";"Id<=" & [Id])-DSuma("[Retiro]";"DetallesTelcel";"Id<=" & [Id])

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas