Access - #Error en Suma en Formulario específico

   
Vista:

#Error en Suma en Formulario específico

Publicado por Felipe (2 intervenciones) el 25/07/2015 15:33:54
Hola, la verdad es que soy muy nuevo en Access y tengo un problema que no encontré por donde solucionarlo.

El tema es el siguiente, tengo un formulario que calcula los resultados de una consulta con ciertos criterios. La consulta resume información de varias tablas y tiene los siguientes parámetros: ("[Cliente]","[Vendedor]","[Área Producto Vendido]","[Producto Vendido]","[Monto Vendido]","[Año]").

La gracia del Formulario es que resume la información por producto y año para que sea de fácil lectura para todos.

El formulario está compuesto por muchos cuadros de texto (por cada producto y año) y cada uno tenía como origen de datos la siguiente fórmula =DSuma("[Monto Vendido]","[Consulta]","[Año]=(Año i) And [Producto Vendido]='Producto i'").

Cuando creé el formulario me sumaba sin problemas los montos, y si aplicaba diversos filtros al vendedor (Porque el formulario va variando según el vendedor que escoja de un cuadro combinado) me iba actualizando correctamente todos los campos y dejando en vacío los campos donde no hubiera datos. Hasta ahí todo perfecto

El problema surge cuando cierro Access y lo vuelvo abrir. Al ir a mi formulario todos los campos me aparecen con #Error y para colmo, si copio lo escrito en el origen de datos y lo pego en un formulario nuevo, me devuelve el valor calculado como si no hubiera problema.

No entiendo qué puede ser y necesito ayuda por favor!

Gracias
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

#Error en Suma en Formulario específico

Publicado por Enrique Heliodoro (1663 intervenciones) el 25/07/2015 16:42:52
Las condiciones de la función no me parecen correctas y si bien al crearlas pueda aceptarlas, al reproducirlas no lo hará.

las (supongo que variables) : (Año i) / 'Producto i'

Deberían expresarse así (asumiendo que los espacios en los nombres de variables no deberían contener espacios):
([Año i]) al respecto de 'Producto i', es una cadena de texto que no se evaluara y puede contener un dato de cualquier tipo.

Normalmente las variables deberían sacarse fuera de la expresión de texto para que realmente fueran 'evaluables':
Asumiendo que: (Año i) representa a un valor numérico y que 'Producto i' a un valor de texto
DSuma("[Monto Vendido]","[Consulta]","[Año]= " & [Año i] & " And [Producto Vendido]='" & [Producto i] & "'").
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

#Error en Suma en Formulario específico

Publicado por Felipe (2 intervenciones) el 27/07/2015 14:03:21
Enrique, muchas gracias por tu respuesta.

El [Año i] y [Producto i] está escrito a mano es decir [Año i] toma valores como {2012, 2013, 2014...} y lo mismo para productos por lo que al aplicar el ampersand no cambia que todavía me arroje #Error :(
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

#Error en Suma en Formulario específico

Publicado por Enrique Heliodoro (1663 intervenciones) el 27/07/2015 14:37:43
Vamos a partir del supuesto de que el problema no esta en la función de dominio ...

Al parecer toma como referencia una consulta guardada y seria interesante constatar que esa consulta devuelve datos recién abierta la aplicación.

El desconocimiento del entorno real me impide aportar soluciones, aunque me causa extrañeza el que Access pueda interpretar adecuadamente los referentes utilizados.
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

#Error en Suma en Formulario específico

Publicado por Felipe (1 intervención) el 27/07/2015 16:52:40
Enrique,

Nuevamente muchas gracias por tu respuesta. Te explico paso a paso cómo lo hice (como soy ignorante en el tema prefiero no saltarme nada porque no sé por donde vendrá el error).

Tengo las siguientes tablas que contienen los siguientes campos:

1. Ingresos (resumen de los ingresos por Empresa)
a. Id (clave principal)
b. Suma de monto vendido
c. Nombre Producto
d. Año Venta
e. Empresa

2. Codigos (Listado de los productos que ofrece la empresa)
a. Nombre Producto
b. Código (clave principal)
c. Área del producto

3. Listado Ejecutivos (Asignación de Empresas a Ejecutivos)
a. Código de Empresa (clave principal)
b. Nombre Empresa
c. Id Ejecutivo

4. Ejecutivos (Listado de Ejecutivos)
a. Id Ejecutivo (clave principal)
b. Nombre Ejecutivo


Creé un formulario que se llama Resumen Información con 2 cuadros combinados y 2 subformularios:

El primer cuadro combinado está relacionado a una tabla de la siguiente manera: SELECT Ejecutivos.[Id.Ejecutivo], Ejecutivos.[Nombre Ejecutivo] FROM Ejecutivos; A este cuadro lo llamé ComboBox_Ejecutivos

El segundo cuadro combinado me dice las empresas que tiene cada Ejecutivo seleccionado: SELECT [Listado Ejecutivos].[Nombre Empresa], [Listado Ejecutivos].[Id Ejecutivo]
FROM [Listado Ejecutivos]
WHERE ((([Listado Ejecutivos].[ID Ejecutivo])=[Formularios]![Resumen Información]![ComboBox_Ejecutivos]));. A este cuadro lo llamé ComboBox_NombreEmpresa.


Luego creé una Consulta que se llama Consulta por Ejecutivo el cual tiene los siguientes campos:

Campo 1: Nombre Empresa
Tabla: Listado Ejecutivos
Criterios: Como ("*" & [Formularios]![Resumen Información]![ComboBox_NombreEmpresa] & "*")

Campo 2: Código Empresa
Tabla: Listado Ejecutivos

Campo 3: Suma de Monto Vendido
Total: Suma
Tabla: Ingresos

Campo 4: Id Ejecutivo
Tabla: Ejecutivos
Criterios: [Formularios]![Resumen Información]![ComboBox_Ejecutivos]

Campo 5: Área del producto
Tabla: Codigos

Campo 6: Nombre Producto
Tabla: Codigos

Campo 7: Año Venta
Tabla: Ingresos


El primer subformulario llamado SubFormulario Consulta por Ejecutivo contiene la información general por Empresa, es decir contiene la información de la Consulta por Ejecutivo con los campos:
a. Nombre Empresa
b. Código Empresa
c. Suma de monto vendido
d. Año Venta


Este subformulario me muestra la información a medida que actualizo al Ejecutivo y el Nombre de la Empresa (Me lo actualiza gracias a una Macros de Form.Refresh)


El segundo subformlario el cual se llama SubFormulario Desglose por Empresa es el que me presenta el #Error en todos los campos que tienen el siguiente origen de datos (Este código cambia para cada Área {A, B, C}, para cada año {1, 2, 3} y para cada Producto {i, j, k}

=DSuma("[Suma de Monto Vendido]","[Consulta por Ejecutivo]","[Área del producto]='Área Producto A' And [Año Venta]=1 And [Nombre Producto]= 'Producto i'")

Estos son los cuadros que cuando los creé por primera vez me mostraban la información correcta y a medida que actualizaba al Ejecutivo y a la Empresa me mostraban el desglose por cada producto de forma correcta.

El problema surgió cuando lo cerré y volví a abrir que me muestra el #Error y si copio en un formulario nuevo la misma fórmula me muestra el valor correcto

No sé que hacer y necesito ayuda plis y estoy muy agradecido por los intentos de ayudarme que han tenido.

Gracias!
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

#Error en Suma en Formulario específico

Publicado por Enrique Heliodoro (1663 intervenciones) el 27/07/2015 22:16:01
Reproducir todo ese entorno (lo lamento, pero no) supone un trabajo que no me apetece hacer.

Normalmente se acostumbra a generar un conjunto de datos que después se filtraría en función de los intereses (por ejemplo: los valores seleccionados en los combos), esto es (y me parece que estoy cayendo en la repetición) una consulta de selección, agrupación .... la adecuada que genere 'en bruto' los datos (después se impondrán las condiciones).

Hay que partir de un concepto que tiene que ser DIAFANO, estamos trabajando con datos (no con elementos estéticos) y los datos se generan mediante consultas. las consultas se generan con/sobre las tablas y se manejan después mediante los formularios (es donde entra la estética y ergonomía), para (y finalmente) extraerlos mediante los informes (que es para lo que sirven: informar).

Todo el diseño de Access (como manejador de datos) sigue esa línea y si bien es cierto que se pueden hacer mas o diferentes cosas ... en fin, para hacer malabarismos se precisa una amplia técnica y dominio y no deja de ser un espectáculo (la mayor parte de las veces con aplicaciones muy limitadas aunque estéticas), porque para obtener un buen rendimiento se ha de utilizar la herramienta adecuada (que puede ser Access o no en función de lo que se necesite).
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