Access - Campo calculado con referencia a control de subformulario

   
Vista:

Campo calculado con referencia a control de subformulario

Publicado por Rokan (3 intervenciones) el 18/12/2013 21:18:25
Hola a todos, tengo una duda con el planteamiento de una expresión que me define un campo calculado en una consulta que sirve de origen de datos a un sub formulario.
Primero voy a mostrar el diseño de tablas y sus relaciones y luego paso a explicar el problema.
Tengo las tablas:
Compras(Campos: nºalbaran-compra, id-proveedor, fecha-compra, ... ; Clave: nºalbaran-compra)
Detalle de Compra (Campos: nºalbaran-compra, id-producto, kilos-compra, precio-compra; Clave: nºalbaran-compra, id-producto)
Ventas (Campos: nºalbaran-venta, id-cliente, fecha-venta, ... ; Clave nºalbaran-venta)
Detalles de Venta ( nºalbaran-venta, id-producto, kilos-venta, precio-venta, ...; Clave: nºalbaran-venta, id-producto)
Productos (id-producto, nombre-producto, ... ; Clave : id-producto)
Proveedores (Campos: id-proveedor, nombre-proveedor, ...; Clave: id-proveedor)
Existencia(Campos: id-producto, nºalbaran-compra, id-proveedor, kilos-existencia; Clave: idproducto, nºalbaran-compra, id-proveedor)
Las relaciones entre las tablas se deducen claramente, porque he usado nombres de campos con el mismo nombre en cada una de las relacionadas.

Tengo un formulario para Venta con un subformulario Detalle de Ventas incrustado y este subformulario usa como origen de datos una consulta que está creada a partir de la tabla [Detalles de Venta]. En dicha consulta necesito incluir un campo que reste al campo [precio-venta] el valor del campo [precio-compra] y para obtener este último necesito hacer una búsqueda en la tabla [Detalle de Compra] usando como criterio el valor que tenga el campo [nºAlbaranCompra] y el campo [id-producto] en cada registro del subformulario. He usado esta expresión:

Bkilo: [precio-venta] DBúsq("[precio-compra]";"[Detalle-Compra]";"[Detalle-Compra]![nºalbaran-compra] = " & [Formularios]![Albaranes de Ventas]![Detalles Albaranes Venta Subformulario].[Form]![txtNAlbaranCompra] & " AND [Detalle-Compra]![id-producto] = " & [Formularios]![Albaranes de Ventas]![Detalles Albaranes Venta Subformulario].[Form]![cmbIdProducto])

Aclaro: txtNAlbaranCompra y cmbIdProducto son los controles vinculados a los campos correspondientes

Al abrir el formulario de Ventas, me sale una ventana de error que dice: "Error de sintaxis (falta operador) en la expresión de consulta "[Detalle-Compra]! [nºalbaran-compra] = AND [Detalle-Compra]![id-producto] = '."

No sé porque da este error.

También he usado esta otra expresión, pero tampoco la entendido bien el Access:

Bkilo: [precio-venta]-(SELECT precio FROM [Detalle-Compra] WHERE [Detalle-Compra]![nºalbaran-compra] = [txtNAlbaranCompra] AND [Detalle-Compra]![id-producto] = [cmbIdProducto] ;)
al usar esta, Acces me advierte de que la consulta me devuelve un solo registro y no me la ejecuta.

Necesito saber si ambas expresiones son válidas o no, y qué tengo mal en su sintaxis que no me funcionan. Llevo muchos días con esto y he probado de todo, pero sin resultado. ¿Me podría ayudar alguien?

Un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Norberto

Campo calculado con referencia a control de subformulario

Publicado por Norberto (432 intervenciones) el 19/12/2013 12:44:10
Hola.

Si la expresión

"[Detalle-Compra]![nºalbaran-compra] = " & [Formularios]![Albaranes de Ventas]![Detalles Albaranes Venta Subformulario].[Form]![txtNAlbaranCompra] & " AND [Detalle-Compra]![id-producto] = " & [Formularios]![Albaranes de Ventas]![Detalles Albaranes Venta Subformulario].[Form]![cmbIdProducto])

Devuelve

[Detalle-Compra]! [nºalbaran-compra] = AND [Detalle-Compra]![id-producto] =

Es porque

[Formularios]![Albaranes de Ventas]![Detalles Albaranes Venta Subformulario].[Form]![txtNAlbaranCompra]

Y

[Formularios]![Albaranes de Ventas]![Detalles Albaranes Venta Subformulario].[Form]![cmbIdProducto]

Contienen valores nulos. Tienes que evitar que eso ocurra.

Un saludo,

Nor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar