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
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.
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...
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.
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
- Compartir respuesta