Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.
MS Access 2003: determinar la oferta ganadora en la consulta
Este tutorial de MSAccess muestra cómo crear una consulta para determinar las ofertas ganadoras en Access 2003 (con capturas de pantalla e instrucciones paso a paso).
P: En Microsoft Access 2003/XP/2000/97, tengo un [lots] mesa y un [bids submitted] mesa.Esta [lots] La tabla contiene muchos artículos para ofertar y [qty available] Campo que indica cuántos artículos hay disponibles.Esta [bids submitted] La tabla contiene todas las ofertas para estos artículos.
Quiero crear una consulta de [bids submitted] mesa.
Por ejemplo, si tengo 4 tazas novedosas a la venta, todas las tazas son iguales, por lo que se deben mostrar las 4 ofertas más altas de 25.
Sin embargo, si tengo 2 felpudos de bienvenida a la venta, la misma consulta también debe devolver las 2 mejores ofertas de felpudos de bienvenida.
¿Cómo puedo hacer esto?
R: Demostraremos cómo hacer esto con el siguiente ejemplo.
Si tenemos dos tablas definidas de la siguiente manera:
Esta un monton de La tabla contiene los detalles del artículo ofertado, incluida la cantidad disponible (es decir: [qty available] campo), y oferta presentada La tabla contiene información de la oferta. Las dos tablas están vinculadas según el campo item_id.
En este ejemplo, queremos devolver 4 ofertas ganadoras (por [qty available] field) para item_id = 1 y 2 para item_id = 2.
Configuramos la siguiente consulta que usa tanto la función IIf como la función DCont.
La fórmula en el segundo campo se configura de la siguiente manera:
IIf(DCount("*","bids submitted","item_id = " & [bids submitted].[item_id] & " and bid_amount >= " & [bid_amount])<=[qty available],"Include",Null)
Esto devolverá el valor “Incluir” si el registro es una oferta ganadora, o NULL si no lo es. Luego ingresamos “incluir” como criterio para este campo calculado, eliminando así todas las ofertas fallidas de nuestros resultados.
Cuando ejecuta esta consulta, solo devuelve registros de ofertas ganadoras en la tabla de envío de ofertas.
El SQL para esta consulta se ve así:
SELECT [bids submitted].* FROM [bids submitted] INNER JOIN lots ON [bids submitted].item_id = lots.item_id WHERE (((IIf(DCount("*","bids submitted","item_id = " & [bids submitted].[item_id] & " and bid_amount >= " & [bid_amount])<=[qty available],"Include",Null))="Include"));