Imprimir página | Cerrar ventana

Duda sobre Campo Calculado

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=85737
Fecha de impresión: 28/Marzo/2024 a las 12:10


Tema: Duda sobre Campo Calculado
Publicado por: oecruz
Asunto: Duda sobre Campo Calculado
Fecha de publicación: 14/Enero/2021 a las 05:29
Hola.

Soy completamente amateur en Access. Estoy haciendo un sistema pequeño para mi negocio, para llegar el pulso de quien compra y quien no ha comprado en un tiempo.
Tengo un formulario (solo lectura) con un subformulario. El formulario muestra Clientes y un código interno de cliente . El subformulario tiene una tabla con las compras acumuladas de ese cliente desde el inicio de la base de datos. Mediante un Control Calculado en Origen del Control, con la expresión  =Suma([Monto]) calculo el acumulado, que llevo a un campo en el formulario base, solo para consulta rápida.

La pregunta sería: ¿Cómo puedo variar la expresión =Suma([Monto]) para limitar el acumulado de compras de un cliente, digamos al último año o semestre? ¿Es esto posible?
Posteriormente lo haría con una consulta, para otra parte del sistema, pero de momento quisiera hacerlo de ese modo, no sé si es viable.

Mil gracias por la ayuda. Realmente, esta parte de armar los resultados e informes me cuesta mucho más que el resto de las relaciones.


-------------
OC.



Respuestas:
Publicado por: rokoko
Fecha de publicación: 14/Enero/2021 a las 09:29
Hola.  Tendras una fecha de venta no??

Pues con esa fecha y un DLookup filtrado por fechas y cliente ya lo tendrias

https://docs.microsoft.com/es-es/office/vba/api/access.application.dlookup

Otra opción es que ese informe, o formulario, se base en una consulta y los filtros (criterios) los pongas en la consulta, id cliente y fecha.

Hay otra opción que es que apliques el filtro en el codigo para abrir el informe, condicion Where del DoCmd.Open.......


Publicado por: oecruz
Fecha de publicación: 14/Enero/2021 a las 09:44
Hola Rokoko...
Gracias por los tres tips.
Voy a probar con el primero, pues me interesa hacerlo con un campo calculado, básicamente con que aún no quiero meterme con las consultas ni los informes.
No soy informático, pero entiendo partes de código un poco. Voy poco a poco con esto... Y vi que en este foro mucha gente contesta, por lo que me pareció adecuado probar suerte. Hay que ser honestos, muchas cosas sí me quedan grandes de esto.

Pruebo y te confirmo, gracias de nuevo.


-------------
OC.


Publicado por: oecruz
Fecha de publicación: 16/Enero/2021 a las 02:13
Hola Rokoko.

Lo intenté con el Campo Calculado en Origen del Control.
Intenté esto:
=DLook("Monto";"TB_Proyectos_AUX";"Fecha>=#" & Fecha()-30 & "#")
y exploré también el DSuma:
=DSuma("Monto";"TB_Proyectos_AUX";"Fecha>=#" & Fecha()-30 & "#")

No logro sin embargo, que el resultado sea consistente. Me da un resultado numérico (que no compruebo si es correcto o no, pero al menos son números), pero a veces según el cliente tengo un #Error en vez de números.

Mi estructura es esta:
Un formulario de solo lectura donde se despliega el total histórico acumulado vendido a un cliente (con =([Monto]), y la idea es poder ver el acumulado de los últimos 6 meses y 3 meses por igual. 
Este formulario tiene un subformulario, que se alimenta de una tabla (son los mismos datos, el subformulario es construido con el Asistente), y ahí ya se filtran los proyectos por cliente, por lo que solamente necesitaría segmentarlos por fecha, para los últimos 90 días o 180 días, creo. 
Los TextBox donde se usa la expresión están escondidos en el pie de página, y de ahí se van al cuerpo del formulario de solo lectura.


Estamos tratando de armar esto para poder leer mejor información que tenemos en Excel desde hace 5 años y mejorar un poco la cartera con clientes pasados en estos tiempos de pandemia.
 
Como te mencionaba, yo no soy programador, y soy novato en Access. No logro entender dónde está mi error aún realmente, pero la idea es armar este formulario con Campos Calculados, y posteriormente armar los Inforrmes basándose en Consultas (las cuales no he estudiado aún de modo profundo). Como usamos =Suma([Monto]) para el acumulado, quisieramos usar algo similar en este caso.

Te quedo agradecido nuevamente, si me podés orientar en la sintaxis adecuada, que creo, es lo que estoy fallando.



-------------
OC.


Publicado por: 01loko
Fecha de publicación: 16/Enero/2021 a las 08:17
A mi, uno de los artículos que mas me ayudo con el tema fechas fue este de Mihura:

http://www.accessaplicaciones.com/ejemplos.html#rt07" rel="nofollow - http://www.accessaplicaciones.com/ejemplos.html#rt07

Yo me lo leería despacio.


-------------
Recordar de que soy nuevo y estoy aprendiendo.


Publicado por: rokoko
Fecha de publicación: 16/Enero/2021 a las 08:36
En tu caso tienes que filtrar por cliente y fechas.

Una buena opcion para que tu puedas poner las fechas que quieras en cualquier momento es que estan se pillen del formulario, de esta formapuedes poner las que tu quieras.

=DSuma("Importe";"tbMovimientosBancoA";"Id <= Forms!frmMovimientosBancoA.Id" & " And  [FECHA] BETWEEN forms!frmfrmMovimientosBancoA!Texto0 AND forms!ffrmMovimientosBancoA!Texto2 ")

Por ejemplo, esto lo tengo guadado en mis apuntes, en este caso filtra el campo importe de la tabla tbMobimientosBancoA por id y entre dos fechas( campo FECHA) . Y como ves pilla los datos del formulario Forms!frmMovimientosBancoA y las fechas de otros dos campos texto0 y texto2

Esto de da mas versatilidad ya que no son fechas cerradas, pones las que quieres.
Cada vez que cambiaes de fecha o cliente tienes que hacerle un Requery al campo calculado donde este DSuma para que se actualice....

El enlace que te a puesto 01loko de Mihura esta muyyyy bien para aprender.


Si un cliente no tiene ventas es posible que te de error, para eso utiliza la funcion Nz....Nz(......;0)

https://docs.microsoft.com/es-es/office/vba/api/access.application.nz


Publicado por: oecruz
Fecha de publicación: 16/Enero/2021 a las 12:00
Gracias 01Loko y Rokoko...
Creo que me han dado material para trabajar unos días investigando.
Hoy me moví a algunos informes, para ir viendo la pinta, mientras logro sobrepasar esto que les presento, porque sin duda, es lo que más me cuesta.

La idea de seleccionar fecha de inicio y de final, es muy buena. Quería algo así, pero para adelante, aunque con lo que me das por acá, voy a intentar implementarlo de una vez... creo que es buena idea.

Mil gracias por la ayuda muchachos... les comento cómo me va en unos días.

Clap


-------------
OC.



Imprimir página | Cerrar ventana