Inconveniente para traer un subtotal de un subformulario a un formulario Ppal

Los expertos, a quien me dirijo respetuosamente por sus experiencias buscando una solución a mi problema.

Estoy haciendo una DB en Access 2010 para un sistema de Ofertas de equipos Móviles.

1) Tengo un formulario Ppal "Ofertas" en el cual se diligencia la información del cliente y muestra resultados de los subformularios.

2) Este formulario contiene 3 subformularios (DetallePlanes, DetalleServicios, DetalleEquipos) que dependen de su respectiva tabla:

Los campos de cada uno se llenan con algunos datos que trae de otras tablas (Planes, Servicios, Equipos) que contienen datos predefinidos y únicos, mas otros que se ingresan de manera manual y estos deben hacen algunos cálculos

3) Cada Subformulario tiene un campo que me calcula un Subtotal

4) En el pie de cada subformulario cree un campo de texto para que me sume ese subtotal y luego mostrar el resultado en el formulario principal "Ofertas"

Hasta aquí no hay ningún problema

LO QUE ME ESTA VOLVIENDO LOCO ES: que solo dos de los 3 si me muestra el resultado en el formulario ppal,,,, pero el primero no lo hace.

Les cuento que he hecho de todo (he creado nuevos campos con diferentes formatos tanto en las tablas como en los formularios, he creado campos independientes... Cree una tabla nueva... Finalmente cree una DB nueva y nada.. Etc.. Etc)

5) El campo del subformulario que me recoge el subtotal tiene el siguiente codigo:

=(([No_Lineas]*[CBasico_SinIVA])*([NF]-[Descuento])*([Meses_Contrato]-[No_CB_Gratis])/[Meses_Contrato])

6) Cree un campo "Texto55"en el pie del subformulario para que me sume ese subtotal:

=Suma(([No_Lineas]*[CBasico_SinIVA])*([NF]-[Descuento])*([Meses_Contrato]-[No_CB_Gratis])/[Meses_Contrato])

7) El campo del formulario Ppal lo dejé como Origen de Control a este campo asi:

=[SubfDetalle_Planes].[Formulario]![Texto55]

Porque de 2 subformularios si me trae el subtotal y de este otro no...

¿Cuántos subformularios puedo tener en un formulario?

Por su ayuda y colaboración les agradezco de todo corazón

Un abrazo desde Colombia

Atte. Luis Alberto

1 Respuesta

Respuesta
1

Tras ver tu BD comento aquí lo que he detectado, por si alguien tiene un problema similar:

El problema no está en el formulario principal, es decir, la captura del importe del subformulario se produce correctamente.

El problema está en que el campo del subformulario que te recoge el total no devuelve ningún valor. Y no devuelve ningún valor porque está intentando sumar campos calculados de la sección detalle.

Lo que se tiene que hacer para arreglar eso es:

- Crear una consulta y realizar los cálculos en la propia consulta a través de campos calculados.

- Cambiar el origen del subformulario a la consulta creada, adaptando los controles a los nuevos campos

- El campo a pie de formulario que te recoge la suma ahora deberá adaptarse al nombre del campo calculado que contiene los valores que quieres sumar.

Espero que, más o menos, se haya podido entender la mecánica.

Saludos,

¡Gracias! 

Hermano Neckkito, muchas pero muchas gracias por tu colaboración tan valiosa. Eso era lo que necesitaba hacer. La respuesta fue muy clara, la verdad no sabia eso.

De esta solución me surge una pregunta:  

  • cuando necesite crear un subformulario es mas practico o conveniente crearlo que dependa de una Consulta o de una tabla??
  • O solo se hace de una consulta para este tipo de casos??

Nuevamente Mil gracias

Un abrazo desde Colombia

Yo soy partidario de utilizar preferentemente las tablas. Parto de la premisa de que las tablas son para almacenar información y las consultas son para consultarla. Si tus subformularios funcionan bien sobre tablas, yo te diría que no los tocases.

Sólo, cuando como en tu caso, no tienes más remedio que recurrir a una consulta, pues es cuando cambias a usar una consulta como base, aunque sea para introducción de datos.

Otro problema de usar las consultas como método de introducción de datos es que, según la estructura de la misma, consigues una consulta que devuelve un recordset no actualizable. Eso simplemente significa que la consulta es, automáticamente, de solo lectura. Si te has pasado un tiempo considerable planificando y creando esa consulta para que luego no puedas ni introducir ni modificar datos eso es una...

En fin, espero que haya quedado claro que mi respuesta es una opinión personal, y que quizá pueda haber otras personas que opinen diferente y que sean más partidarios del uso de consultas como método de introducción de datos. Toda opinión es perfectamente respetable :-)

Hola Neckkito, muchas gracias por tus respuestas y consejos. He solucionado parte de los problemas de mi DB gracias a tu ayuda.

Teniendo en cuenta que mi DB tiene varios subformularios y que para solucionar mi problema tuve que usar consultas (de acuerdo a tu recomendación). Ahora al crear un registro NUEVO en mi DB me deja los mismos datos en el subformulario del registro anterior. Me imagino que debo crear alguna instrucción que me limpie ese subformulario y me permita llenar otro con información nueva... el problema es que no se como hacerlo

Mil y mil gracias

Tienes que relacionar el formulario principal con los subformularios. Eso, usualmente, lo haces cuando creas el subformulario, a través del asistente.

En tu caso la relación tiene que hacerse a mano

Pon tu consulta CDetalles_planes en vista diseño y, en una columna vacía, tras el último campo calculado, arrastras y añades el campo [Cod_Oferta]

Abre tu formulario SubfDetalle_Planes, saca los campos disponibles y añade el campo [Cod_Oferta] en último lugar, pero dentro de la sección detalle.

Abre tu formulario Oferta en vista diseño y selecciona el subformulario SubfDetalle_Planes. Saca sus propiedades y te vas a la pestaña Datos. Asegúrate que los valores de las siguientes propiedades sean las siguientes:

Vicular campos principales: Cod_Oferta

Vincular campos secundarios: Cod_Oferta

A ver si con esto te funciona.

Neckkito, definitivamente ud es un duro en esto. Claro que si funcionó. Pero mis problemas no acabaron allí.

Para finalmente cerrar este tema, quiero preguntar si es posible establecer el siguiente criterio o una expresión para un campo del subformulario así:

SI el campo "Producto" es igual a Voz, entonces en el campo "IVA" coloque 20% SI NO coloque 16%. En excel es algo muy sencillo. Pero acá en access no se como se haría. Teniendo en cuenta que mi subformulario se basa en una consulta.

De antemano pido disculpas por tanta molestia. Pero admiro mucho su eficiencia y experticia en el tema.

Gracias Neckkito por ayudar a los que estamos entrando en este mundo de Access.

La idea de crear un hilo no es solo para solventar tu pregunta, sino también que pueda ayudar a gente que tiene una duda similar.

Tu última pregunta no tiene relación con el título de tu consulta original, por lo que te ruego que abras una nueva consulta con un título adecuado.

De todas maneras lo que pides está ya resuelto en otras respuestas, y no tiene nada que ver si el formulario o su formulario está basado en una tabla o una consulta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas