Función DSum

Estoy iniciándome en Access y tengo un problema son la función de domicilio Dsum. Os explico lo que debo realizar:
Tengo una BD que se llama: PETICIONES
En ella hay los siguientes campos (entre otros):
- Producto (texto)
- Dpto (numérico entero)
- Cantidad (numérico entero)
- FechaPeticion (fecha corta)
- FechaCancelacion (fecha corta)
Tengo un formulario denominado "FRM TOTALES" con los siguientes datos:
- Un cuadro de texto independiente "FechaDesde"
- Un cuadro de texto independiente "FechaHasta"
- Un cuadro de texto independiente "Total1"
- Un cuadro de texto independiente "Total2"
Quiero que una vez se instroduzcan las "FechaDesde" y "FechaHast", en los siguientes campos muestre el total (SUMA) de los datos que solicito. Es decir, quiero que en el campo "TOtal1" me de el total de lo solicitado en "Producto" para el "Dpto" POR en que la "FechaCancelacion" sea NULL (que ho exista fecha) y que figure la "FechaPeticion" entre las indicadas en el formulario ("FechaDesde" y "FechaHasta"), yo lo he intentado pero no me sale bien, me da errores, lo que no he puesto en la función es:
= DSum("Cantidad", "PETICIONES", "[PETICIONES.Producto='FIJOS' AND [PETICIONES.Dpto]= 8442 AND [PETICIONES.FechaCancelacion]= Null AND [PETICIONES.FechaPeticion] Between [Me.FechaDesde AND
[Me.FechaHasta")
Quisiera saber si me podéis ayudar, estas funciones de dominio son bastante complejas cuando introduces los criterios.

1 Respuesta

Respuesta
1
Para mostrar los rangos podrías utilizar el siguiente código:
DESDE=Formularios!Rangos!FechaInicio HASTA=Formularios!Rangos!FechaFin
En cuanto a la función DSum, la condición es que sume los valores de un rango dado en los cuales en el campo FechaCancelación es nulo y un número específico de ID y que pertenezca a un determinado producto. Podría ser más o menos así:
=Nz(DSuma("[Cantidad]";"Peticiones";"[Producto]='FIJOS' AND [Dpto]=1234 AND [Tabla].[Fecha]>=[Formularios]![Rangos]![FechaInicio] AND [Tabla].[Fecha]=<[Formularios]![Rangos]![FechaFin] AND [Tabla].[FechaCancelación]= "" "))
Pruébalo y me comentas luego para ver otras soluciones si no te funciona.
Hola, muchas gracias por la respuesta. Ahora ya no me da error de sintaxis, pero no consigo que en el cuadro de texto donde tengo puesto en "origen del control" la función, muestre el total, yo he puesto:
=Nz(DSuma("[Cantidad]";"PETICIONES";"[Producto]='FIJOS' AND [Dpto]=1234 AND [PETICIONES].[FechaPeticion]>=[Formularios]![FRM TOTALES]![FechaDesde] AND [PETICIONES].[FechaPeticion]=<[Formularios]![FRM TOTALES]![FechaHasta] AND [PETICIONES].[FechaCancelación]= "" "))
"Cantidad" es el campo de la tabla a sumar, "PETICIONES" es la tabla, "FRM TOTALES" es el formulario donde tengo los 2 cuadros de texto campos de fecha ("FechaDesde" y "FechaHasta") donde introduzco las fechas a utilizar luego en la función, así como otros 2 cuadros de texto ("Total1" y "Total2") uno para "Dpto" = 1234 y otro para "Dpto" <> 1234.
No se que es lo que puede ocurrir, tal vez no la esté poniendo en el lugar correcto. Agradeceré vuestros comentarios. Gracias
(xxxxxx)
Creemos una función que sume los datos que precisas (cantidad en un rango de fecha de petición, un determinado Id y sin fecha de cancelación), quedaría más o menos así:
'en la funcion vamos a utilizar solamente los datos que usaremos para consultar que no están dados como FechaDesde, FechaFin y Dpto que pueden ser variables, digamos que 'fijos' pueden ser Producto y Fecha de Cancelacion como Nulo, y Nz para convertir valores null a cero
'----------------------------------------
Private Function sumar_registros(ByVal FechaDesde As Date, _
                            ByVal FechaHasta As Date, ByVal Dpto As Double) As Double
    sumar_registros = Nz(DSum("[Cantidad]", "Peticiones", _
           "[FechaPeticion] >=#" & FechaDesde & "#" & _
            "AND [FechaPeticion] <=#" & FechaHasta & "#" & _
            "AND [Dpto] = " & Dpto & _
            "AND [Producto] ='FIJOS'" & _
            "AND [FechaCancelacion] Is Null "), 0)
End Function
'------------------------------------------
y luego, en un evento click sobre un boton en el mismo formulario:
'-----------------------------------------
Dim fecha_inicio As Date
Dim fecha_fin As Date
Dim depto As Double
Dim fecha_cancelacion
Dim cuenta As Integer
fecha_inicio = Me.FechaDesde
fecha_fin = Me.FechaHasta
dpto = Me.Dpto
fecha_cancelacion = ""
cuenta = sumar_registros(fecha_inicio, fecha_fin, dpto)
'-----------------------------------------
Prueba con tu base de datos y me avisas luego.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas