Como puedo usar la Funcion Dúltimo

Tengo una Tabal Producto con los campos:

Id

Código de Barras (Clave Principal)

Codigo de Producto

Nombre de Producto

Propiedad

Leasing (si/no)

Centro de Costo

Y tengo una tabla de Detalle traslado que tiene:

Cod_Barras (Clave Principal)

Codigo de Producto

Nombre de Producto

Numero de Traslado (Clave Principal)

Nuevo Centro de Costo

Estas dos tablas están en una relación 1 a varios por medio de (Clave Principal)

Ahora lo que deseo es usar el código Dlast

Private Sub Codigo_de_Barras_afterupdate()

Centro_de_Costo = DLast("[Nuevo Centro de Costo]", "[Detalle de traslado]", "[Cod_de_Barras]")

End Sub

Para que me registre en la tabla Producto en la Columna Centro de Costo, Ultimo Registro de [Nuevo Centro de Costo] que esta en la tabla de [Detalle de Traslado]

Adjunto cuadro de Relación

1 respuesta

Respuesta
2

Te falta especificar el criterio (el tercer parámetro) en la función. Sería así:

Private Sub Codigo_de_Barras_AfterUpdate()
Centro_de_Costo = DLast("[Nuevo Centro de Costo]", "[Detalle de traslado]", "[Cod_de_Barras]=" & Codigo_de_Barras)
End Sub

en caso de que el campo código de barras lo tengas definido en la tabla como numérico, o así:

Private Sub Codigo_de_Barras_AfterUpdate()
Centro_de_Costo = DLast("[Nuevo Centro de Costo]", "[Detalle de traslado]", "[Cod_de_Barras]='" & Codigo_de_Barras & "'")
End Sub

en caso de que fuese lo tengas como texto.

¡Gracias! Excelente muchas gracias....

Espero poder contar con su conocimiento en otras ocasiones.

Sin problema. NO te olvides de valorar la respuesta.

Un Favor... este se alimenta cada vez que registro un el código en un formulario de Producto, pero como hago para que se actualice sin necesidad de que toque ingresar nuevamente el código de barras... si no por lo contrario que tan pronto yo habrá el formulario Producto este ya este actualizado...

No entiendo muy bien lo que pretendes hacer, pero mira si poniendo en el evento al cargar del formulario este código hace lo que quieres:

Private Sub Form_Load()
Call Codigo_de_Barras_AfterUpdate
End Sub

Estoy teniendo un problema con DLAST, me esta trayendo el ultimo registro, pero no el ultimo registro en base al código de barras..es decir independiente del código de barras me registra el ultimo registro..

Es como si no estuviera teniendo en cuenta el Código de Barras.

Ya veo el problema: el campo en la tabla se llama Cod_Barras, no Cod_de_barras.

 DLast("[Nuevo Centro de Costo]", "[Detalle de traslado]","[Cod_de_Barras]='" ...

Si es correcto ya hice la corrección.

Listo primer problema solucionado, ahora el segundo:

Coloco en el form_load() la instrucción, pero no hace nada.

Registro a través del formulario de Traslado que tiene como sub formulario el Detalle de Traslado.

y cuando entro al formulario producto en el código que realice el traslado este no quedo actualizado, fue necesario reescribir el código y de esta manera si lo actualizo.

adjunto imagen...

Pues debiera funcionarte tal como lo tienes, siempre que abras el formulario en ese código.

Prueba a cambiar el código de Form_Load a Form_Current, es decir, de Al cargar a Al activar el registro, a ver si así te actualiza.

Si no, otra opción que tienes es actualizar la tabla Producto al añadir un nuevo registro en Detalle de traslado, algo así:

Private Sub Nuevo_Centro_Costo_AfterUpdate()
DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE Producto Set [Centro de Costo] =" & Me.Nuevo_Centro_Costo
DoCmd.SetWarnings True
End Sub

Sabes que pasa con la función call??

Solo actualiza el primer registro... el resto no

Al Call no le pasa nada, hace exactamente lo que pedías: "... que cuando abra el formulario este ya esté actualizado"

Si lo que quieres es que se te actualice al cambiar de registro, tienes que usar el evento "Al cativar registro" en vez del "Al cargar". Por tanto, quita el código de Private Sub Form_Load() y ponlo en Private Sub Form_Current()

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas