Access - DSum con dos criterios me devuelve el total de la consulta y no el total de los criterios

 
Vista:
Imágen de perfil de Federico

DSum con dos criterios me devuelve el total de la consulta y no el total de los criterios

Publicado por Federico (4 intervenciones) el 10/09/2021 08:50:44
Tengo una consulta de selección por el campo IDOperativo, que une 3 tablas: TOperativo, TClientes y TPosteoOperativo. Diseñe un Informe de la consulta y en el pie del informe agregue el DSum que es este:
TextoX=dsum("ImporteCobrado1","ConsultaPosteo","TipoCobro1= 'Efectivo'" and idposteo=" & me.idposteo & ")

El objetivo es que me devuelva la suma del ImporteCobrado1, en "Efectivo", para el IDOperativo, que se seleccione en la consulta y me está devolviendo el total de efectivo cobrado en todos los operativos, sin tener en cuenta la selección.
Lo curioso es que pruebo definiendo un ID de operativo y me sigue dando el importe total en efectivo de todos los operativos. Lo probé así:
TextoX=dsum("ImporteCobrado1","ConsultaPosteo","TipoCobro1= 'Efectivo'" and idposteo="1")
Por favor ayúdenme... no soy especialista en programación, pero necesito está base de datos para mí trabajo.
Gracias de antemano
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

DSum con dos criterios me devuelve el total de la consulta y no el total de los criterios

Publicado por Anonimo (3316 intervenciones) el 10/09/2021 09:48:39
Cuando surge un problema como ese, conozco dos caminos para su solucion:

Uno es utilizar el generador de consultas y 'jugar con los datos' para obtener el resultado deseado, obtenido este se pone la consulta (creada con el generador de consultas de Access) en su 'Vista SQL y detras de 'Where .....' esta la consulta tal como la exige Access para obtener ese resultado.


Otro es el clásico método de toda la vida: el de la sustitución
Un ejemplo con dos condiciones, una de Texto y otra numérica:

Lo que funcionaria pero no seria funcional (por ser de un solo uso)
TextoX=dsum("ImporteCobrado1","ConsultaPosteo","TipoCobro1= 'Efectivo' and idposteo= 1")

Sustituiremos los valores fijos por variables para que sea útil y funcional
Efectivo ==> Dato1
El uno (1) ==> Dato2

Quitamos los valores y en los cortes suturamos
TextoX=dsum("ImporteCobrado1","ConsultaPosteo","TipoCobro1= ' " ............ " ' and idposteo= " ........)

Añadimos el pegamento
TextoX=dsum("ImporteCobrado1","ConsultaPosteo","TipoCobro1= '" & ............ & "' and idposteo= " & ........)

Los puntos (que representan el espacio de los valores fijos) se sustituyen por las variables
TextoX=dsum("ImporteCobrado1","ConsultaPosteo","TipoCobro1= '" & Dato1 & "' and idposteo= " & Dato2)


Se suele hacer en un unico paso (sale bien a partir del primero)
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 Federico Gastell

DSum con dos criterios me devuelve el total de la consulta y no el total de los criterios

Publicado por Federico Gastell (4 intervenciones) el 10/09/2021 15:46:19
Muchas gracias, voy a probar con la segunda opción y le dejo saber si funciona
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 Federico Gastell

DSum con dos criterios me devuelve el total de la consulta y no el total de los criterios

Publicado por Federico Gastell (4 intervenciones) el 10/09/2021 18:04:04
Escribí en el cuadro de texto del pie del informe está exprésion:

TextoX=dsum("ImporteCobrado1","ConsultaPosteo","TipoCobro1= '" & Efectivo & "' and idposteo= " & IdPosteo)

El cuadro de exprésion acepta la orden, pero cuando ejecuto el informe que ejecuta la Consulta de Selección, además de pedirme el IdPosteo Iniciar y el IdPosteo final, que son los criterios de la consulta de selección, me pide introduzca el valor de "Efectivo".

Qué estoy haciendo mal?
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

DSum con dos criterios me devuelve el total de la consulta y no el total de los criterios

Publicado por Anonimo (3316 intervenciones) el 10/09/2021 22:12:01
Lo normal es que solicite los datos propios de la consulta y de el resultado con un click

Cuando se utilizan VARIABLES, es para poder reutilizar el código :
.- para una determinada situación interesa obtener a
.- los ¿efectivo?
.- en otra a los ¿crédito?
.- y en otra a ¿tarjeta?
(asumiendo que son medios de pago o control)

Si SIEMPRE se utilizara para tipo = 'efectivo', se le asigna ese dato y solo se utiliza (en el ejemplo: Dato2) para enviarle el IdPosteo que nos interesa y haria asi:
1
2
3
Dim Dato2 As Long (para un numero sin decimales)
Dato2 = ????? (pudiera ser Me.IdPosteo, el numero que se muestra como dato en el cuadro de texto IdPosteo)
TextoX=dsum("ImporteCobrado1","ConsultaPosteo","TipoCobro1= 'Efectivo' and idposteo= " & Dato2)

Desconociendo la aplicación, sus tablas, campos y su destino poco se puede aportar, pero con la excepción de que los datos se repitan (IDPOSTEO no defina a un único registro o con ese único dato no sea suficiente para obtener lo que se busca), normalmente no se condiciona a la consulta origen (salen todos los 'IDPOSTEO' que existan = no pregunta nada) y en la función de dominio se condiciona para obtener la suma de ese IdPosteo en particular.

Por cierto, mi ejemplo tenia dos campos (dato1 y dato2) uno de texto y otro numérico con el exclusivo fin de mostrar como se aplica en esos tipos de datos (si hubiera fechas por el medio, hubiera utilizado un tercer dato 'Dato3' para ampliar el ejemplo),

La respuesta breve:
Si el concepto SIEMPRE será 'EFECTIVO', no modificar esa parte y que sea el IDPOSTEO (cualquiera que sea su origen y si el tipo de datos es el correcto) el que condicione la respuesta

Por cierto:
TextoX=dsum("ImporteCobrado1","ConsultaPo ................................

Me suena a asignación directa desde VBA y no al origen de datos de un objeto en modo diseño y ¿de donde se toma el dato IDPosteo como referente?
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