Arrastrar saldos

En un formulario tengo un cuadro de texto independiente que utilizo para realizar una serie de cálculos. Le he llamado "Saldo Final". Necesito tener otro campo que se llame "Saldo Anterior" y que arrastre el valor del campo "Saldo Final" del registro anterior.
Gracias por responder. Si no me he explicado bien dímelo e intentaré hacerlo mejor.

1 Respuesta

Respuesta
1
Si no me equivoco, creo que lo que necesitas es un suma continua parecido al de los
Informes. El siguiente ejemplo se basa en Neptuno.mdb.
1º La tabla o consulta que usemos es necesario que tenga un campo ID autonumérico o un campo Fecha/Hora, en este caso usamos la Tabla Pedidos.
2º Crear un formulario basado en la tabla Pedidos, añadir los siguientes campos: IdPedido, Cargo y Destinatario. Añadir un cuadro de texto independiente que llamamos RunningSum con el
siguiente Origen del control: =DSuma("[Cargo]";"Pedidos";"[IdPedido] <= forms![RunningSum]![IdPedido]") guardar el formulario como RunningSum y pasarlo a Vista formulario.
3º Verás que al desplazarnos de un registro al siguiente se produce una suma en el campo RunningSum tomando el valor que teníamos en el registro anterior para el campo Cargo. Solo nos quedaría darle un poco de formato al campo RunningSum, en este caso es un Moneda y
usamos $ #. ##0,00;($ #. ##0,00) si quieres Kg sin decimales te quedaría más o menos así "Kg "0
4º Se puede seguir desarrollando el ejemplo para que nos refresque el registro con los datos nuevos, etc.
NOTA: aquí usamos el campo Cargo de la tabla Pedidos para arrastrar el saldo, sobre un campo independiente la verdad es que no he probado.
Gracias por la información, pero no es exactamente lo que pretendo, ya que en tu ejemplo el campo RunningSum toma el valor del campo [Cargo] del registro anterior y se lo suma al valor del mismo campo del registro actual. Efectivamente arrastra saldos, que es el titulo que yo puse a mi pregunta, por lo que creo que no me supe explicar bien.
Yo lo que pretendo es que si el campo [Cargo] del registro nº. 1 tiene un valor de 100, el campo "RunningSum" del registro nº. 2 tenga ese mismo valor, sin que sume el valor del campo [Cargo] del registro nº. 2.
Gracias por responder.
Cambia el Origen del control de RunningSum por esto otro:
=DBúsq("[Cargo]";"Pedidos";"[IdPedido]>= forms![RunningSum]![IdPedido]")
=DBúsq("[Cargo]";"Pedidos";"[IdPedido]>= forms![RunningSum]![IdPedido]")
Hola Raul. He puesto la expresión que me has dicho, tal y como figura arriba, y el resultado no es el esperado, ya que así me aparece en el campo [RunningSum] el valor del campo [Cargo] del registro en el que me encuentro.
He probado a poner la misma expresión pero modificando >= por <= y no funciona, ya que siémpre me aparece el valor del campo [Cargo] del primer regístro. También he probado a poner sólo <, y hace lo mísmo que lo anterior.
También he probado a poner sólo >, y así hace lo que yo quiero pero al revés, ya que si estoy en el rigistro nº. 5, en el campo [RunningSum] me pone el valor del campo [Cargo] del registro nº. 6, y yo lo que quiero es que aparezca el valor de ese campo pero del registro nº. 4
Gracias una vez más por responder y perdona por darte tanto el coñazo.
Saludos. Gabi
Sin disculpas, ya suponía que el DBúsq te daría problemas, además que no he caído en la cuenta que ese método del Dlookup solo funciona si tenemos un Id numérico en la tabla. Si este es el caso de tu tabla, la sintaxis correcta seria:
=DBúsq("[Ciudad]";"ClientesA";"[ID]=Forms!RunningSum_mod![ID]-1")
NOTA: el -1 indica que es el registro previo, Observa también que si estas en el primer registro del recordset no se mostrará nada. Si quieres mostrar el valor del control Ciudad del registro siguiente, cambia eso por +1.
En caso que no tengas ese campo ID en la tabla y no sea posible incluirlo te puedo mandar una rutina en vba (bastante extensa para el propósito).
Hola Raul. Esto último sí que funciona, pero me he encontrado con un problema que creo tú ya habías supuesto.
El problema es que el campo al que hace referencia la expresión que venimos tratando es un campo independiente, en el cuál en Origen de control tengo puesto una expresión para que realice un cálculo con el valor de otros campos.
Parece ser que DBúsq sólo funciona cuando haces referencia a un campo que se encuentra en una tabla/consulta, y no en un formulario sin más como es mi caso.
¿Qué puedo hacer?
Gracias una vez más por responder
Creo que aquí ya me he perdido, si el formulario es independiente ¿cómo puedes pasar a registro nuevo?
Si el caso que llevamos entre manos es un formulario dependiente, con algunos controles independientes para los cálculos (y otros dependientes de una tabla/consulta), entonces podemos seguir usando la expresión de antes, iras arrastrando el valor del campo independiente mientras te mueves por los registros, hasta que lo cambies:
=DBúsq("[Texto5]";"ClientesA";"[ID]=Forms!RunningSum_mod![ID]-1")
Nota que Texto5 es independiente
Hola Raul, perdona pero no me aclaro.
Cuando pongo la expresión que tú me comentas, el campo me aparece en blanco, así pues voy a detallarte un poco mejor lo que estoy haciendo.
Yo tengo una tabla que se llama "Caja", en la cuál hay 2 campos, uno se llama IdCaja (Autonumérico) y el otro Fecha (Fecha/Hora), y tengo un formulario dependiente de esta tabla que se llama Caja!. En este formulario aparecen los dos campos que figuran en la tabla y además una serie de subformularios dependientes de otras Tablas. También tengo una serie de controles independientes que toman su valor de los totales de los subformularios, por ejemplo, [TotalCobros], [TotalPagos], [TotalEntregas],.., y tengo un control independiente que a su vez toma su valor de estos campos, que se llama [SaldoCaja]. Este control independiente lo que hace es restar a los cobros los pagos y las entregas. De esa forma consigo el saldo de la caja del día. Cuando paso al registro siguiente (al día siguiente), necesito arrancar con el saldo de la caja del día anterior, es decir, que el valor del campo [SaldoCaja] del día anterior, por ejemplo registro 1, me aparezca en el campo [SaldoAnterior] del día siguiente, en el ejemplo, registro 2.
Según la expresión que tu me comentas, lo que yo he puesto en Origen de Control del control [SaldoAnterior], es lo siguiente:
=DBúsq("[SaldoCaja]";"Caja";"[IdCaja]=Forms!Caja![IdCaja]-1")
Un saludo y gracias por responder
Gabi
Por lo que me dices IdCaja es un autonumérico, yo creía que el DBúsq solo funcionaba con un numérico y siempre correlativo, acabo de probarlo con un ID autonumérico y también me funciona.
Lo único que veo en tu código es que el formulario se llama igual que la tabla, no creo que sea ese el problema, pero las funciones de dominio agregado son un poco especiales.
El caso es que he probado con formulario y subformulario y tampoco me da error.
Si lo crees conveniente puedes pasarme una copia de la BD (solo la estructura, sin datos) a [email protected] por si de esta forma conseguimos solucionarlo de una vez.
Espero que te haya llegado el correo.
Un cordial saludo
Raul
Hola Raul. Sí que me ha llegado.
Muchísimas gracias por la ayuda. Voy a seguir desarrollando la BD. Si tengo algún otro problema espero que no te importe que me vuelva a poner en contacto contigo.
Sin más, saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas