Todoexpertos.com
http://www.todoexpertos.com
La respuesta está en Internet
Información de la pregunta
Título: Origen de control
Experto: jpaniagua
Valoración: 4
Fecha: 17/06/2008


Origen de control
Que tal: 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 apartir 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**)

Origen de control
Buenas: Imagino que lo habrás intentado será algo como [b]Forms![NOMBRESUBFORMULARIO]![NOMBRECONTROL][/b] 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: [b]Forms![FORMULARIOPRINCIPAL]![SUBFORMULARIO]![CONTROLSUBFORMULARIO]  [/b]  Un saludo

Origen de control
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 mas 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 ylas 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.

Origen de control
Buenas: El Formulario2 es el formulario padre del formulario3 asi 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 Un saludo,  

Origen de control
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 cambiandole 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á?

Origen de control
Buenas: 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.  

Origen de control
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 idependiente) 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 ¿que 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 ¿porqué? 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 tubiera. Hecho(B) Cuando seleccionara y diera enter al produco 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 mas me animo.

Origen de control
Buenas: 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 formula quedará: =DSuma("CANTIDAD";"NOMBREDELATABLADELCAMPO";"[Nombre]=Forms![Puntoventa]![DetallePV]![Nombreproducto]) Prueba y dime si funciona, insisto que las tablas deben estar bien relacionadas. Un saludo,  

Origen de control
!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 Subformualrio 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]")

Origen de control
Buenas: 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 asi: [b]=DSuma("Cantidad";"DetallePV";"[FolioPuntoVenta]=Forms![PuntoVenta]![FolioPuntoVenta]")[/b] Estoy suponiendo que el campo relacionado se llama FolioPuntoVenta en la tabla DetallePV Un saludo,    

Origen de control
Bueno sigue sumando toda la tabla, considero que voy a cambiar de estrategia y a buscar un código que me permita tener un producto diferente por cada registro del SubForm. MUCHAS GRACIAS AMIGO, CON TU AYUDA APRENDÍ ALGO NUEVO Y UTIL. Hasta la próxima.

Pregunta finalizada. Valoración: 4
Muchas gracias por tu gran paciencia y seguimiento. Que tengas buen día.


Volver al mensaje
http://www.todoexpertos.com/categorias/tecnologia-e-internet/software-y-aplicaciones/microsoft-access/respuestas/1863395/origen-de-control