Access - CONTROLES QUE NO SE REFRESCAN.PREGUNTA PARA EXPERT

 
Vista:

CONTROLES QUE NO SE REFRESCAN.PREGUNTA PARA EXPERT

Publicado por Lewinsky (15 intervenciones) el 07/03/2003 13:56:55
Hola,

Tengo una duda existencial. Tengo en un formulario un subformulario que debe recibir datos de un procedimiento externo, es decir, si el usuario pulsa un botón se abre otro procedimiento se realizan una serie de cálculos y el resultado tiene que ser devuelto a campos de la base de datos que coinciden con los campos del subformulario en el formulario inicial. El subformulario en cuestión está en la vista "hoja de datos" y normalmente se actualizan varias filas. El problema es que aunque en la base de datos se actualizan bien todos los valores, no ocurre así en el subformulario que hace que todas las filas correspondientes a los campos modificados se modifiquen excepto la primera, que no sufre modificación alguna. Para colmo de males, antes de salir del formulario que contiene al subformulario (con el que hace los cálculos ya cerrado, ese sólo modifica la base de datos) aunque no haya nadie más ejecutando cosas en la base de datos dice que otro usuario ha modificado la base de datos y te da a elegir entre guardar tus datos en el portapapeles o guardarlos machacándo la información que ese usuario ficticio ha introducido. En caso de indicar que se guarden tus cambios, los cálculos que fueron modificados en la base de datos se modifican con los que hay actualmente en el subformulario (la primera fila que no se ha actualizado) y se eliminan los campos que el formulario encargado de realizar los cálculos había introducido. En caso de decir que se metan en el portapapeles, es cuando se registran las modificaciones que deben registrarse. ¿Qué hago?

Pista: El problema es que cuando se abre el subformulario que realiza los cálculos y los introduce en la base de datos access asume que se trata de otro usuario (no es verdad). Seguramente que si pu
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
Imágen de perfil de Alejandro

CONTROLES QUE NO SE REFRESCAN.PREGUNTA PARA EXPERT

Publicado por Alejandro (4142 intervenciones) el 26/04/2023 22:53:30
Una posible solución es utilizar un objeto Recordset en lugar de modificar directamente los campos del subformulario. De esta manera, Access no pensará que otro usuario ha modificado la base de datos y no se producirán los errores descritos.

Para ello, puedes crear un objeto Recordset que haga referencia a la tabla que contiene los datos del subformulario y utilizar el método "Edit" para modificar los valores de los campos necesarios. Una vez realizadas las modificaciones, utiliza el método "Update" para guardar los cambios.

Por ejemplo, el código podría ser algo así:

1
2
3
4
5
6
7
8
9
10
11
Dim rs As Recordset
Set rs = Me.Subformulario.Form.RecordsetClone
rs.MoveFirst
Do Until rs.EOF
    ' Aquí realizas los cálculos necesarios y actualizas los valores en el objeto Recordset
    rs.Edit
    rs!Campo1 = valor1
    rs!Campo2 = valor2
    rs.Update
    rs.MoveNext
Loop

De esta forma, estarías actualizando los datos del subformulario utilizando un objeto Recordset en lugar de modificar directamente los campos. Esto debería solucionar el problema que estás experimentando.
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