¿Como puedo poner esta formula =([campo]) en codigo ?

Antes que nada te mando un cordial saludo.
Tengo un problema, no se si puedas ayudarme. Mi Subformulario esta compuesto por 3 campos, "debe","haber" . Y en mi formulario principal tengo el campo llamado "TOTAL"quiero que aparezca el resulato de la suma de la columna del "debe" en el total del formulario principal y que esas cantidades se guarden en la tabla, sin la necesidad de hacer otra consulta. No se si sea posible hacer estas fórmulas en código.
=suma([campo])  y la de Subformulario.Formulario!Campo que son las que se utilizan en esta actividad, pero tienen el problema de que no guardan el resultado en la tabla y yo necesito forsozamente almacenar el resultado para ser utilizado poeterior mente

1 respuesta

Respuesta
1
Si tienes un formulario con un subformulario hay ciertas reglas para referirse en código a cada control.
Supongamos que tu formulario principal se llama "Cuentas" y su subformulario se llama "subdebehaber"
1. Abre en vista diseño tu subformulario "subdebehaber" y dirígete a la sección Pie de Formulario (si no te aparece haz clic dererecho en una zona libre de tu form y elige Encabezado o pie de formulario)
2. Crea un control Cuadro de Texto en el pie del subform, te vas a propiedades y en la ficha Otros en Nombre escribes "sumaDebe" sin comillas. En la ficha origen del control escribes:
=Suma[debe]
3. Guardas y ahora te vas a tu formulario principal "Cuentas" en vista diseño y creas un nuevo control tipo Botón. En propiedades del Botón te vas a la ficha eventos y en Al hacer Clic pinchas en los trs puntitos que aparecen al final y luego seleccionas "Generador de Código" Se abre BVA y escribes esto:
Me.Total = Me!subdebehaber.Form!sumaDebe
4. Listo! Cuando en vista formulario presiones el control te mostrará el resultado de la suma y además lo guardará en la tabla.
Sugerencia: Si quieres ver en tiempo real cuando vas agregando valores al campo debe en tu subform que está en tu formulario principal crea un cuadro de texto en el formulario principal y en propiedades del cuadro de texto en Origen del control pones:
=[subdebehaber].[Formulario]![sumaDebe]
Hay más formas para guardar un campo calculado en una tabla, pero depende mucho de en qué condiciones se quiere guardar el dato (al cerrar, después de actualizar, al descargar...)
Me cuentas cómo te fue.
Gracias, muchas gracias por tu ayuda;
Pero no me fue muy bien (oops), ya hice lo que me indicaste, no se, tal vez hice algo mal. Pero no me lanzo ningún resultado. Tengo una duda ¿en dónde encuentro "control tipo botón"? Tengo access 2003. ¿Es un botón cualquiera?, ¿O de la lista que te aparece cuando creas un botón? ¿Cuál de ellos debo crear?.
Mira mi formulario Principal se llama FormProyectos y el campo donde quiero que se vacíe el resultado y se guarde en la tabla se llama Importe4. Mi SubFormulario, el cual esta ligado al principal, se llama DatosProyectos y contiene 3 campos DEBE, HABER y SUMADEBE. Hice lo que me indicaste, con ecepcion de "control tipo botón" (no te entendí, oops!) Y no me arrojo nada, mi fórmula me quedo asi; Me. importe4=DatosProyectos. Form!sumadebe
Lo que hice fue en importe4 me fui a propiedades, clic en eventos, clic a los 3 puntitos, después de actualizar, código vb y ahí puse la fórmula, tal vez ese fue mi error, ¿no se si me pudieras volver a ayudar? Muchas gracias y en verdad estoy muy agradecido por tu rápida respuesta gracias.
Con respecto al botón: si tienes Access 2003 en tu Cuadro de Herramientas es el botón de comando.
¿En tu subform DatosProyectos el campo SUMADEBE es un campo calculado? Si lo que quieres es la suma total de éste, en el pie del formulario creas un nuevo cuadro de texto y en propiedades en la ficha Otros en Nombre lo llamas SumadeSUMADEBE y en la ficha Datos escribes en Origen del control:
=Suma[SUMADEBE]
Esto sumará todos los registros en el campo SUMADEBE (si quieres sumar otro campo cambia por su nombre del campo)
En FormProyecto debe estar el campo llamado Importe4 (que está ligado con tu tabla)
En tu formulario FormProyecto en vista diseño creas un botón de comando, si te aparece un asistente lo cancelas. En propiedades del control te vas a la ficha Eventos y en Al hacer clic escribes:
Me.Importe4 = Me!DatosProyecto.Form!SumadeSUMADEBE
Listo.
Me comentas el resultado.
Gracias, gracias
Pues ya funciona ! Gracias por tu tiempo y paciencia y disculpa todas las molestias. Ya seguí todas las instrucciones que me mandaste, y si, ya funciona como quería, ya me guarda los datos y la las operaciones las hace a la perfección.
Solo una pregunta más ¿habrá una manera de que lo haga al momento? ¿Ves qué me pusiste una sugerencia? Sin necesidad del botón, que lo haga en tiempo real, tu me mencionaste de una forma que era; hacer un cuadro de texto en el form principal y en propiedades del cuadro de texto en origen del control pongo : =[subformulario].[formulario]! Campo claro con sus nombres respectivos ¿no seria regresar al mismo problema? Espero no desesperarte, y muchas gracias por la molestia que te tomas, gracias por tu tiempo, rapidez y paciencia.
Efectivamente, en tiempo real para ver la suma del campo de un subformulario (conforme se van agregando datos en DatosProyecto) en un formulario principal FormProyecto es con un cuadro de texto en FormProyecto.
=[DatosProyecto].[Formulario]!SumadeSUMADEBE
Esto va en el cuadro de texto en Origen del control
Este cuadro no te generará problema alguno con lo que ya hemos hecho, así que créalo en el FormProyecto con confianza.
Pero esto no lo agregará a tu tabla automáticamente. Para esto creamos el botón para que cuando des clic se grabe en la tabla
Lo que sucede es que depende de la aplicación, a veces es un poco de lío guardar campos calculados mediante código de un subform a un form. Esto porque depende mucho de la forma en que se modifican los datos en el subform y la manera en que queremos que se guarden.
El más seguro, para mi sencillo punto de vista, es el botón.
He estado analizando tu ultimo comentario y comparto la misma idea, puedo dejar los dos, con botón y con el cuadro, de esta manera me daré cuenta que no he actualizado el resultado del botón con el del cuadro, ya que ambos deben de tener la misma cantidad.
Bueno experto mi duda y problema ha quedado solucionado, muchas gracias por tu tiempo, me agrado mucho tu interés y quiero hacer manifiesto tu claridad para explicar los procedimientos para llegar a la solución, una excelente rapidez de respuesta y paciencia.
Gracias, y espero que te encuentres bien.
Saludos desde Mexico :) todo funciona a la perfección !

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas