Octener Total con Dsum() en Vba ACCESS

Tenfo un formulario llamado: "frm_LITROS_X_DIA"

En este Formulario tengo dos cuadros de texto llamados: "Txt_Inicial_Fch" y "Txt_Final_Fch" que reciben la fecha inicial y final del formulario principal.

Este formulario administra los campos de una tabla llamada: "LITROS_X_DIA" y tiene entre otros, los campos Cliente, fecha, litros.

El Formulario tiene ademas un cuadro de texto independiente, llamado: "txt_ltrs_Sum" el cual pretendo usar para que cuando se haga clic en el boton guardar registro "Cmd_Guardar" se calcule el total de litros que este cliente tiene durante el rango de fechas usando Dsum() en vba.

La logica seria:

Sumar todos los litros del cliente que aparece en el cuadro de texto "Cliente" del formulario. En tre las fechas  "Txt_Inicial_Fch" y "Txt_Final_Fch". Y la verdad solo tengo esto:

Me.txt_ltrs_Sum.Value = DSum("Litros", "LITROS_X_DIA", "Cliente= " & Me.Cliente.Value)

No se como completar los criterios mediante esta funcion. Se que hay otras formas de hacerlo, pero me interesa especificamente saber si es posible hacerlo mediante este metodo.

Agradezco su ayuda.

2 Respuestas

Respuesta
2

Permíteme un consejo. Llama a los campos y todo tipo de objetos con el nombre todo junto. Luego te explico el porqué

Prueba a ponerlo simplemente como

Me.txt_ltrs_Sum= DSum("Litros", "LITROS_X_DIA", "Cliente= '" & me.clientes & "'")

Te decía lo de poner los nombres siempre juntos(ya los pondrás "bonitos" en las etiquetas).

Si los pones separados, puedes escribir, por error, Nombre Cliente y te vuelves loco al ver que nada funciona y es que sin querer(se supone) has dejado dos espacios entre Nombre y Cliente, y es difícil darse cuenta.

El editor de VB cuando crea un control o lo que sea que tenga el nombre separado, por ejemplo Nombre Cliente, automáticamente lo pone como Nombre_cliente, pero luego si quieres hacer referencia al campo de la tabla tienes que recordar que en la tabla va separado, no con el guión bajo. Con lo que si son muchos, no sabes si realmente lo pusiste como Txt_Clientes o Txt Clientes y VB le ha añadido el guión bajo.

¡Gracias! Buen Aporte. Generalmente mantengo un estandas de programación, Usando siempre nombres descriptivos de los objetos y siempre separados por (_).

En ese caso, perfecto. Si siempre haces lo mismo no hay problema. Lo digo porque hay gente que a veces lo pone como Nombre Cliente, otras Nombre_Cliente, le pone acento a unos a otros no, etc.

Respuesta
2

Si quieres añadir el filtro de fechas, como creo que es tu pregunta, la expresión sería así:

Me.txt_ltrs_Sum.Value = DSum("Litros", "LITROS_X_DIA", "Cliente= " & Me.Cliente.Value & " AND Fecha BETWEEN #" & Me.Txt_Inicial_Fch & "# AND #" & Me.Txt_Final_Fch & "#"))

si Cliente es un campo numérico, o así:

Me.txt_ltrs_Sum.Value = DSum("Litros", "LITROS_X_DIA", "Cliente= '" & Me.Cliente.Value & "' AND Fecha BETWEEN #" & Me.Txt_Inicial_Fch & "# AND #" & Me.Txt_Final_Fch & "#"))

si Cliente es un campo de texto.

Por otro lado, aclarar el comentario de los nombres de Julian: no pasa nada por usar nombres con espacio (aunque no es lo más correcto), en VBA lo puedes llamar por el nombre con espacio, siempre que lo pongas entre corchetes, por ejemplo, si el campo en la tabla se llama "Nombre Cliente", en VBA puedes referirte a él como "Me.Nombre_Cliente" o "Me.[Nombre Cliente]". Y en lenguaje SQL, lo mismo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas