Devolución de datos

Mi duda es acerca de como hacer que el dato resultante de una operacion en un cuadro de texto de un formulario sea almacenado en un campo de una tabla.Consigo que en el cuadro de texto aparezca el dato introduciendo en origen de control la formula =([capo1]*[campo2]) pero no encuentro la forma de hacer que ese resultaado sea almacenado en un campo de una tabla.
He leído ya dos libros pero no lo especifican y he visto que tu sabes de esto. Agradecería mucho tu respuesta ya que es muy importante para mi trabajo.

1 respuesta

Respuesta
1
Lo que tu necesitas se llama campo calculado.
El problema que estas teniendo, es que de la forma que lo haces, el cuadro que usas para mostrar el resultado de la suma, es un cuadro de solo lectura para mostrar una información. Al poner en el origen de control una expresión, ya no puedes vincularlo a un campo de tabla.
Un campo calculado no puedes hacerlo en una tabla, pero si en una consulta. Lo que tienes que hacer es crear una consulta basada en la tabla, con un campo más, el calculado, definido tal como tienes escrito arriba. Quedara algo así:
Expr1: [campo1]+[campo2]
Exprn es el nombre que da por defecto Access a los campos calculados. Lógicamente puedes cambiar su nombre por otro más significativo.
Una vez creada la consulta de esta manera, ya puedes olvidarte de la tabla original. Trabaja siempre con la consulta, y a efectyos prácticos, sera como si tuvieras una tabla con 3 campos, en vez de dos, en los que el tercero responde siempre a la fórmula espresada.
Si por la razón que sea, lo que quieres es que el campo exista físicamente en la tabla, entonces crea ese campo en la tabla como un numérico igual que los otros dos, y en el formulario, vinculalo con su correspondiente cuadro de texto. Para que guardar en el el resultado que quieres, deberás hacerlo mediante código, en el evento AfterUpdate ("Después de actualizar") de los dos cuadros de texto que contienen campo1 y campo2.
Debería quedar algo así (el mismo código para los dos):
If IsNumeric(campo1) And IsNumeric(campo2) Then
campo3 = campo1 + campo2
End If
De este modo, es el formulario quien genera el dato que se guardara en campo3, y el resultado es la tabla con los tres campos respondiendo a la fórmula.
No obstante esta ultima solución tiene un problema. Si algunos de los campos es modificado fuera del formulario, por ejemplo, desde la vista de tabla directamente, campo3 NO se calculara, pues era el formulario quien lo hacia, y ese registro contendrá información errónea. Si estas seguro que NUNCA se accederá directacmente a la tabla, puedes olvidar esto.
Te recomiendo la primera opción.
Ahora mismo intentare realizaarlo, no te imaginas lo que tu respuesto significa para mi. Estoy enormemente agradecido contigo. Realmente controlas del tema

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas