Origen de control

Tengo un control independiente en el formulario principal donde necesito que su origen de contol sea: el campo de un formulario que esta en el subformulario del formulario principal. Se cómo se hace a partir de un campo que esta en el subformulario. Pero de un "subsubformulario" me manda error, he intentado varias cosas pero nada funciona
FormularioPrincipal
ControlIndependiente_______(aquí necesito ver el dato que esta en el control**)
Subformulario
Sub-Subformulario
Control._________________(control**)

1 Respuesta

Respuesta
1
Imagino que lo habrás intentado será algo como Forms![nombresubformulario]![NOMBRECONTROL] Y por eso te da error. Te explico: un subformulario es un "objeto" dentro de un formulario principal, por tanto, si quieres llamar a un control del mismo antes debes llamar al formulario padre. La sintaxis sería:
forms![formularioprincipal]![subformulario]![controlsubformulario]
Gracias por tu amable respuesta.
Se que esta medio loco lo que estoy haciendo: solo busco saber cuántas unidades de un mismo producto llevo vendidas en el momento, el código para mi es como otro idioma 'todavía' podría ser más fácil crear un código que recorra todos los registros de los campos IdProducto y Cantidad compare los que son iguales y sume sus cantidades y las devuelva en un campo independiente en el FormularioPadre. Bueno parcialmente lo he resuelto creando una consulta de suma y poniendo como criterio el FormularioPadre "activo". Funciona solo para los Formulario2 y Formulario3 pero no si incluyo el Formulario1.
¿Mi atorón es cómo llamar un campo que esta dentro de un Sub-SubFormulario? Es decir:
Formulario1= FormularioPadre
Formulario2= SubFormulario (del FormularioPadre)
Formulario3= Formulario "Incrustado" dentro (del Formulario2) Sub-SubFormulario.
Campo3= Campo dentro del Formulario3
Control1= Cuadro de texto independiente en el FormularioPadre
En el [Formulario1] (Padre) tengo un cuadro de texto independiente [Control1], allí necesito ver el dato que tiene el [Campo3] que esta en el [Formulario3] (Sub-SubFormulario) lo he intentado de varias maneras:
=Forms![Formulario1]![Formulario2]![Formulario3]![Campo3]
Y nada. . . ¿No se bien si me expliqué?
Gracias.
El Formulario2 es el formulario padre del formulario3 así que crea un campo en el formulario 2 como ya sabes y luego, en el formulario1 llama al control del formulario2 que acabas de crear.
Tu problema tiene una solución más simple y "limpia", utilizar una función de agregado de dominio:
Entre otras encontramos:
DSuma
DBúsq
La que nos interesa es DSuma
Crea un control independiente y coloca como origen del control:
=DSuma("CAMPONUMERICO";"TABLA";"[Id_Producto]=[NOMBRECONTROL]")
Cambia CAMPONUMERICO por el nombre del campo de la tabla
Cambia TABLA por el nombre de la tabla que tiene los datos
Cambia NOMBRECONTROL por por el nombre que tenga el control en el formulario1
Cuando lo escribí como lo mencionas:
Aparece que Access no puede encontrar el campo 'Forms' al que se hace referencia, que posiblemente se escribió mal el nombre del campo, cambió de nombre o se eliminó.
Bueno cambiándole algunas cositas funcionó: Lo que hace es sumar el total de productos vendidos:
=DSuma("Cantidad","DetallePV","[Cantidad]=[Cantidad]")
Sin embargo lo que necesito es que sume el total de ventas de un producto en particular, algo así como que primero tendría que buscar y separar todos los productos en base en su [IdProducto], ya que los tenga entonces sumar su [Cantidad] para luego devolver el resultado en mi campo independiente.
¿Se podrá?
Te vuelvo a explicar la función DSUMA
=DSuma("CAMPO que quiero sumar";"TABLA donde está el campo";"CRITERIO PARA FILTRAR")
Imagino que DetallePV está relacionado con la tabla de productos por su Id_Producto y que estas en un formulario que tiene el control Id_Producto
Si es así la expresión es:
=DSuma("Cantidad";"DetallePV";"[Id_Producto]=Forms![Nombreformulario]![Nombrecontrol]")
Sustituye Nombreformulario por el formulario que tiene el control por el que vas a sumar y Nombrecontrol por el del control que contiene el Id_Producto.
También debes poner un procedimiento de evento en el formulario Al Activar Registro y entre Private Sub y End Sub
Me. Nombrecontrol. Requery
Sustituye NOMBRECONTROL por el nombre que le des al control independiente que tiene la expresión.
De verdad gracias por el seguimiento:
PuntoVenta es el nombre del formulario principal, DetallePV es el nombre del subfrmulario, IdProducto es un cuadro combinado independiente que esta en el formulario principal; PuntoVenta tiene el campo FolioPuntoVenta el cual es autonumérico y también el lado uno de la relación, DetallePV tiene un campo IdFolioPuntoVenta numérico que es el lado varios de la relación. El Combo IdProducto toma los productos de la tabla Productos y los envía al subformulario.
El subformulario tiene los campos:IdFolioPuntoVenta, NombreProducto, Precio, Cantidad, Importe. El Combo los campos IdProducto, NombreProducto. El Form principal los campos:FolioPuntoVenta, IdCliente, NombreCliente; IdProducto(Combo Independiente); Cantidad(Cuadro de texto independiente) que es donde deseo ver la suma de ventas de cada producto en particular. Nota: en el Form principal tengo otro cuadro de texto independiente cantidad2 ¿qué hace? Bueno su origen del control es el campo cantidad del subformulario, cuando me desplazo por los registros del subform que es hoja de datos me devuelve la cantidad de unidades vendidas de ese producto en ese registro. Mi idea es que en él o en el otro pueda ver la suma de ventas de todos los registros que tengan el mismo IdProducto ¿por qué? Bueno cuando capturo los productos se presentan todos revueltos muchos son del mismo producto entonces el propósito es saber cuantas piezas llevo vendidas de un producto en particular.
Bueno la idea original para evitar todo esto es que: Halla un producto único y diferente para cada registro del SubForm. ¿Cómo? Bueno imaginaba un Combo programado que hiciera dos cosas en función de dos condiciones: Hecho (A) Cuando seleccionara y diera enter al producto deseado. CONDICIÓN Si ese producto ya estaba en algún registro del SubForm entonces (1)ACCIÓN.- Que el producto no se agregara a los registros del SubForm; esto para cumplir con la idea original que es: un producto diferente para cada registro. (2)ACCIÓN que el campo Cantidad sumara una unidad a la cifra que antes tuviera. Hecho(B) Cuando seleccionara y diera enter al producto deseado. CONDICIÓN Si ese producto no esta en ninguno de los registros del subForm entonces (1)ACCIÓN.- Que el producto se agregue al último registro del SubForm. (2)acción.- Que en el campo Cantidad aparezca el número 1 uno. Llevo casi dos semanas buscando un ejemplo semejante para estudiarlo y adaptarlo y en todo internet no he encontrado nada parecido y los que he consultado no han respondido.
Bueno sigo intentando, y con la ayuda amable y generosa como tu pues más me animo.
Creo que tienes un problema y es que las tablas no están relacionadas, por eso todo lo anterior no se puede aplicar a tu caso (lo principal son las relaciones entre las tablas y por tanto una buena codificación)
Dicho lo anterior prueba con el nombre y la fórmula quedará:
=DSuma("CANTIDAD";"NOMBREDELATABLADELCAMPO";"[Nombre]=Forms![Puntoventa]![DetallePV]![Nombreproducto])
Prueba y dime si funciona, insisto que las tablas deben estar bien relacionadas.
! Funciona!
Solamente un detalle importante: qué criterio tengo que escribir para que la suma sea de los registros ACTUALES del Subformulario activo, y no de la suma de todos los registros de la tabla:DetallePV . Porque la Función suma toma TODOS los registros de la tabla tomando como criterio el producto "deseado" y solo necesito conocer la suma del producto "deseado" en todos los registros del Subformulario activo en el momento de estar capturando los productos. El criterio extra pienso tiene que ser el FolioPuntoVenta he intentado acomodarlo en distintos lugares pero no queda.
Hize un evento After UpDate en el Combo Descripcion asi:
Me. Cantidad.Requery
Y si me devuelve la suma del producto seleccionado pero de toda la tabla.
=DSuma("Cantidad","DetallePV","[Descripcion]=Forms![PuntoVenta]![DetallePV]![Descripcion]")
Para que la función funcione debes comprobar:
1º) Como se llama el campo que quieres sumar
2º) En que tabla está
3º) Cómo puedo flitrar los datos
La 3ª parte es la que falla el filtro: Veo que tienes una tabla que se llama DetallePV y que imagino que estará relacionada con otra tabla PuntodeVenta por FolioPuntoVenta si es así:
=DSuma("Cantidad";"DetallePV";"[FolioPuntoVenta]=Forms![PuntoVenta]![FolioPuntoVenta]")
Estoy suponiendo que el campo relacionado se llama FolioPuntoVenta en la tabla DetallePV

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas