Foro VBATotal

Aprender a programar en Visual Basic

Por favor, o Regístrate para crear mensajes y debates.

Tomar en una tabla el valor de un campo de un registro anterior para poner en el registro actual

saludos.
Necesito tomar el valor de un campo que se encuentra en un registro anterior al que se está trabajando en dependencia de la fecha de este registro.
Tengo una tabla que registran los movimientos de productos donde al final del día se calcula la existencia del mismo.
Ejemplo:
día 1ro. Comienzo con 10 artículos; recibo 20; vendo 12; finalizo con 18
el dia 2 debo comenzar con 18 que es el final del día 1ro.
He tratado de muchas formas pero no logro relacionar el INICIO de un día con el final del ANTERIOR.
Gracias por su ayuda.

Hola Joseleo,

Sube el archivo de ejemplo para trabajar sobre él.

Saludos.

Por favor, si te he ayudado, haz clic en algún banner publicitario. Es una gran manera de ayudarme. También puedes realizar una donación en Paypal por la cantidad que desees https://paypal.me/vbatotal

He tratado de subir el archivo pero me dice que no estoy autorizado a subir este tipo de archivo. Lo envio como accdb y como rar y no lo logro, no se que puede ser.
Gracias por su respuesta.

Hola,

Súbelo comprimido en zip.

Saludos.

Por favor, si te he ayudado, haz clic en algún banner publicitario. Es una gran manera de ayudarme. También puedes realizar una donación en Paypal por la cantidad que desees https://paypal.me/vbatotal

Espero que ahora si logre subir. Gracias.

Archivos subidos:
  • Tienes que conectarte para acceder a las subidas.

Finalmente logre subirlo en formato zip. como me dijo. Muchas gracias por su ayuda.

Hola Joseleo,

Yo enfocaría el formulario de otra manera. Ahora solo tienes 2 artículos, pero piensa cuando tengas muchos el follón que te va a suponer tener todos los artículos en el formulario nada más abrirlo.

Por eso, yo abriría el formulario en blanco e iría añadiendo los artículos que han tenido movimientos ese día concreto. A partir de aquí, lo primero sería introducir la fecha y posteriormente elegir el primero de los artículos. Cuando se actualiza el campo del producto, buscamos en la tabla movimientos el valor "inicio" para el día anterior. Puedes usar el comando DlookUp, te dejo el link donde explico su funcionamiento:

https://www.vbatotal.com/buscar-informacion-en-tablas-usando-dlookup-en-access/

Sigo atento a cualquier duda que te pueda surgir.

Saludos.

Por favor, si te he ayudado, haz clic en algún banner publicitario. Es una gran manera de ayudarme. También puedes realizar una donación en Paypal por la cantidad que desees https://paypal.me/vbatotal

Saludos.
Le comento que la tabla "diario" es provisional y la idea es que se reinice en blanco cada vez que se abra. Su objetivo es añadir, a traves del formulario, todos los movimientos del dia, precisamente para evitar acceder a todos los productos y movimientos anteriores.
Me parece bien su idea de buscar el final de la fecha anterior a traves de esa funcion, probare y le comento.
gracias por su ayuda y lo tendre al tanto.

Perfecto 😉

Por favor, si te he ayudado, haz clic en algún banner publicitario. Es una gran manera de ayudarme. También puedes realizar una donación en Paypal por la cantidad que desees https://paypal.me/vbatotal

Saludos.
He intentado hacer la búsqueda y no he podido establecer correctamente el criterio de la la función dlookup. La dificultad está en buscar el valor del campo "final" con fecha anterior a la establecida en el formulario del producto seleccionado. Este valor final del producto va a ser el inicio de la fecha del día que se registran los nuevos movimientos.
Los conocimientos que poseo de programación son básicos por eso le solicito y agradezco su ayuda.
Gracias.

Hola,

En cuanto tenga un hueco esta semana lo miro.

Saludos.

Por favor, si te he ayudado, haz clic en algún banner publicitario. Es una gran manera de ayudarme. También puedes realizar una donación en Paypal por la cantidad que desees https://paypal.me/vbatotal

Hola josele,

He creado un formulario nuevo con el campo fecha. Cuando lo rellenas y pulsas sobre el botón "Buscar", te busca el valor del campo "final" en la tabla "movimientos" correspondiente al producto "2".

Private Sub Buscar_Click()

fechaactual = Form!fecha - 1

finalfechaanterior = DLookup("[final]", "[Movimientos]", "[fecha]=#" & Format(fechaactual, "mm/dd/yy") & "# AND [producto]='2'")

MsgBox finalfechaanterior

End Sub

 

Espero que te sirva.

Saludos.

Archivos subidos:
  • Tienes que conectarte para acceder a las subidas.
Por favor, si te he ayudado, haz clic en algún banner publicitario. Es una gran manera de ayudarme. También puedes realizar una donación en Paypal por la cantidad que desees https://paypal.me/vbatotal

Saludos .

Esta bien lo que me envia para acceder al ultimo registro con fecha de un dia anterior a la fecha del formulario pero realmente necesito algo un poco mas complicado. La fecha pudiera ser de dos dias anteriores a la indicada porque en esos dias no hubo movimientos de productos, entonces no funcionaria de esta manera ya que el dia anterior no tiene registros.

Estoy tratando de hacerlo con programacion pero tengo una dificultad. Aqui le envio el codigo:

Public Sub buscafecha()

Dim dbs As DAO.Database
Dim strSQL As String
Dim rsSQL As Recordset

strSQL = "select top 1 movimientos.fecha from movimientos where movimientos.producto = " & Me.producto & " and movimientos.fecha < " & "#" & Me.fecha & "#" & "order by movimientos.fecha desc"
Set rsSQL = dbs.OpenRecordset(strSQL, dbOpenSnapshot)

f = rsSQL!fecha
MsgBox f

End Sub

Cuando el dia de la fecha del cuadro de texto del formulario es mayor que 12 selecciona correctamente el registro (supongo que asumiendo el formato "dd/mm/yy" porque el ultimo mes es 12) pero si es menor parece que interpreta el formato de fecha como "mm/dd/yy" dando error en la busqueda. Cual puede ser el problema y cual su solucion?

Gracias.

 

Entiendo.

Dame un poco de tiempo para elaborar el código. Me operaron ayer de la rodilla y ando convaleciente.

Saludos.

Por favor, si te he ayudado, haz clic en algún banner publicitario. Es una gran manera de ayudarme. También puedes realizar una donación en Paypal por la cantidad que desees https://paypal.me/vbatotal

Saludos, Le deseo pronta recuperación, no se preocupe que para lo demás hay tiempo. Gracias.

Hola Joseleo,

Por fin retomo el tema.

Te bastaría entonces ordenar la tabla y seleccionar el registro con la última fecha del recordset no?

Saludos.

Por favor, si te he ayudado, haz clic en algún banner publicitario. Es una gran manera de ayudarme. También puedes realizar una donación en Paypal por la cantidad que desees https://paypal.me/vbatotal

Contacto