Funcion DÚlt() (2/4/01)

Voy registrando las compras que se van sucediendo en mi empresa en dos tablas relacionadas uno a varios en forma de albarán. Se registran producto, unidades, pts/unidad e importe.
Para hacer un inventario necesito recuperar de cada producto el último precio de compra. Para ello en el informe del inventario coloco un control en el detalle con la función DÚlt(), para que recorra la tabla compras y recupere el ultimo precio de cada producto, pero observo que no me coge el último precio, tal vez porque la tabla no se carga en el orden adecuado.
También he probado a buscar dicho precio en una consulta basada en la tabla compras y ordenándola de forma que la ultima linea de cada producto sea en verdad la ultima que se introdujo, pero tampoco me funciona
La funcion esta bien definida, creo: DÚlt("[pts/unidad]";"Compras";"[produto]=" & [producto]) Siempre me recupera un precio de ese producto pero no siempre el ultimo
¿Puedes sugerirme algo, por favor? ¿Quizá seria mejor ir guardando los precios que se vayan dando en cada producto al hacer la compra?

1 respuesta

Respuesta
1
Pueden ocurrite varias cosas.
Una es que el último precio introducido no sea el último en fecha, por ejemplo si hoy meten un albarán con fecha de ayer.
Otra cosa que te puede pasar es que el Access te devuelva los datos ordenados según un índice que tenga en esa tabla.
Para mi la solución más segura es construirte tu propio DUtil:
public Function ultimoprecio(Referenciaproducto) as long
Dim Datos as database, Rs as recordset
set Datos=dbengine... (abrimos la base de datos)
set Rs=datos.openrecordset("select [Pts/Unidad] as UltimoPrecio from Compras order by Fecha Desc")
if rs.recordcount>0 then
rs.movefirst
Ultimoprecio=rs!ultimoprecio
else
ultimoprecio=0
endif
rs.close:set rs=nothing
datos.close:set datos=nothing
end function
Si lo que quieres es recuperar el último precio introducido y no tiene por qué coincidir con la última fecha, te aconsejo que en la tabla de detalle te crees un campo autonumérico y en la consulta ordenes por ese campo así estarás seguro que te devuelve el último precio de verdad.
Sobre la dos observaciones que haces señalando el posible fallo, te diré que la primera la veo improbable ya que el campo clave de detalles compras es autonumérico y en las innumerables pruebas que he hecho he ordenado la consulta por dicho campo tal y como me aconsejas.
Estoy más en que es la segunda, la tabla no se carga como yo quiero, le he establecido en sus propiedades que se ordene por el autonumérico pero observo que al ser una tabla vinculada, cuando la abro en el cliente ha perdido esa propiedad. También observo que poniendo la propiedad ordenar por en el cliente, esta se cambia si cualquier usuario la abre y ordena a su gusto (no en modo diseño, simplemente si la carga y la ordena para ver cualquier dato)
Voy a probar el código que me mandas, sin embargo mi escaso conocimiento de VB hará que me surjan dudas y problemas, que no se si sabré resolver yo solo, quizá tenga que recurrir a ti, si me lo permites.
Siento no poder hacerlo hasta después de Semana Santa, ya que llegado este momento las obligaciones familiares se imponen a esta afición, que es para mí el Access, intentando ahorrar mucho trabajo en mi oficina gracias a saber manejar una Base de Datos.
Un saludo
Una última sugerencia, El índice del campo autonumérico, en diseño de la tabla ponle orden descendente.
Si no consigues que funcione estoy a tu disposición, o si quieres enviarme un trozo de código para que lo analice, no hay problema.
Perfecto. No me ha hecho falta mandarte código para que me lo analices puesto que he conseguido solucionarlo. Estoy muy agradecido por tu interés y la verdad es que da mucha seguridad saber que estáis aquí para recurrir a vuestros conocimientos cuando los más inexpertos los necesitamos. Gracias y enhorabuena.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas