Access - Cambiar valor del campo en subform desde form

 
Vista:

Cambiar valor del campo en subform desde form

Publicado por Oscar (9 intervenciones) el 21/02/2007 18:33:54
Buenas tardes, necesito un poco de ayuda para poder continuar con el proyecto.

Resulta que tengo en un formulario, un subformulario con varios registros.

Necesitaría que al cambiar el dato de un campo del formulario, se cambiase a su vez el dato de un campo de todos los registros del subformulario.

( he conseguido que cambiando el dato del campo formulario, cambie el dato del campo del subformulario de "1 solo registro", y necesito de todos.

Esquema:

ENTRO EN EL FORMULARIO:

(Valor del campo del formulario)...100

(valor del campo del subformulario registro 1)... 100
(valor del campo del subformulario registro 2)... 100
(valor del campo del subformulario registro 3)... 100
(valor del campo del subformulario registro 4)... 100
(valor del campo del subformulario registro X)... 100

CAMBIO EL DATO EN EL FORMULARIO:

(Valor del campo del formulario)...80 "cambio"

(valor del campo del subformulario registro 1)... 80
(valor del campo del subformulario registro 2)... 100
(valor del campo del subformulario registro 3)... 100
(valor del campo del subformulario registro 4)... 100
(valor del campo del subformulario registro X)... 100

Espero haberme explicado, gracias de antemano.
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

RE:Cambiar valor del campo en subform desde form

Publicado por Enrique (1299 intervenciones) el 21/02/2007 20:13:51
Una preguntilla Oscar, la primera vez que introduces el valor del campo del formulario principal, ¿ se rellenan todos los registros del subformulario con ese valor, o tampoco ?

Es que tal como lo expones parece que solo falla cuando cambias el valor. Para poder ayudarte es necesario saber si los registros del subformulario existen aunque ese campo concreto esté vacio, o hay tambien que crearlos al mismo tiempo.

Saludos
Enrique
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

RE:Cambiar valor del campo en subform desde form

Publicado por Oscar (9 intervenciones) el 21/02/2007 21:39:00
Mil gracias Enrique por tu atención:

Verás, el campo "porcvariable" de cada registro del subformulario, tiene de valor por defecto al activar un nuevo registro de 100%.

Una vez creados varios registros en el subformulario (por ejemplo 5), y cada registro contiene este campo con valor 100%, quiero cambiar el valor que yo decida (por ejemplo 80%) en todos los registros del subformulario a la vez, mediante un campo en el formulario llamado "cambioporcentaje".

Lo que necesito (supongo), es un código que al salir del campo "cambioporcentaje", me trasmita su valor al valor de todos y cada uno de los registros en el campo "porcvariable".

Conseguí crear un código, pero solo me cambia el del registro del subformulario que se encuentre activo, o en su defecto el primero.

Espero haberme explicado mejor, jeje. Tengo ya la cabeza como un bombo.

Muchas gracias de nuevo.
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

RE:Cambiar valor del campo en subform desde form

Publicado por Enrique (1299 intervenciones) el 21/02/2007 22:14:23
Hola Oscar, te has explicado perfectamente ahora. Se trataría de recorrer todos los registros del Subformulario cambiando el Campo "Porcvariable" de su tabla o consulta origen del registro, por el nuevo valor del campo "CambioPorcentaje" y refrescar posteriormente para actualizar sus datos. Intenta hacer lo siguiente:

Este Evento lo pones en Después de actualizar del Formulario Principal.

Private Sub cambioporcentaje_AfterUpdate()
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("TablaOrigenDelSubForm", dbOpenDynaset)
rst.MoveLast
rst.MoveFirst
While Not rst.EOF
rst.Edit
rst!porcvariable = Me.cambioporcentaje
rst.Update
rst.MoveNext
Wend
rst.Close: Set rst = Nothing
Form_NombreSubformulario.Requery
End Sub

Donde pongo "TablaOrigenDelSubForm", si fuera necesario lo puedes cambiar por el nombre de una Consulta, que funciona igual. No olvides marcar la Referencia: Microsoft DAO 3.6 Object Library si no la tienes ya marcada.

Si ves que no te sale, lo seguimos intentando. Saludos
Enrique
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

RE:Cambiar valor del campo en subform desde form

Publicado por Enrique (1299 intervenciones) el 22/02/2007 10:09:49
Oscar, otra forma de hacer lo mismo sería con una consulta de actualización por código:

Private Sub cambioporcentaje_AfterUpdate()
Dim strSql As String
strSql = "UPDATE TablaOrigen SET TablaOrigen.porcvariable = Cambioporcentaje"
DoCmd.RunSQL srtSql
Form_NombreFormPrincipal.NombreSubForm.Requery
End Sub

Personalmente prefiero con Recordset porque en Tablas con muchos registros va más rapido, aunque si no son muchos no se nota.

Saludos
Enrique
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

RE:Cambiar valor del campo en subform desde form

Publicado por Oscar (9 intervenciones) el 22/02/2007 20:22:10
Hola Enrique:

Hoy no he tenido mucho tiempo para probar los códigos, pero en la primera prueba:

Con el primer código me da varios errores. Es posible que algo no esté haciendo bien, a la hora de indicar el nombre de la tabla, formulario o subformulario, pero seguiré intentándolo. Tampoco tengo idea de que hacer, cuando me dices que tengo que indicar eso de la referencia.

El segundo funciona perfectamente, pero no me sirve por que, no solo cambia el dato en (por ejemplo) los cinco registros que aparecen en el subformulario, sino los (por ejemplo), cuarenta registros que tiene la tabla del subformulario.

El este caso, lo que me haría es cambiarme registros del subformulario no correspondientes al registro actual del formulario, pero este código me viene de miedo para poder hacer otras cosas que tengo en mente con la base, así para esto no, pero para otras cosas me sirve perfectamente.

Muchas gracias por tu tiempo y paciencia.

En cuanto haga todas las pruebas, funcione o no os escribo.

Espero también que estas soluciones que me das, sirvan para otra mucha gente.

Saludos.

- Oscar -
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