domingo, 1 de junio de 2008

PROPIEDAD COLUMN EN CONSULTA


El lenguaje sql de Access permite hacer referencia al valor de un control de un formulario :

Ejemplos sobre Neptuno.mdb :

SELECT *
FROM Proveedores
WHERE IdProveedor = Forms!Proveedores!IdProveedor

pero si intentamos lo mismo con otras propiedades del control, por ejemplo Column, nos da error :

SELECT *
FROM Proveedores
WHERE NombreCompañía = Forms!Proveedores!IdProveedor.Column(1);

Normalente para manejar este tipo de casos, construimos dinámicamente la consulta desde vba, pero no es la única forma ...
La solución : utilizar Eval(). Esta función nos permite crear un puente entre propiedades que solo están disponibles desde vba y sql :

SELECT *
FROM Proveedores
WHERE NombreCompañía = Eval("Forms.Productos.IdProveedor.Column(1)");

Y ahora sí, al ejecutar la consulta, visualizaremos el registro del proveedor con el 'NombreCompañía' que muestre el combo IdProveedor en el formulario 'Productos' en ese momento.

Ramon Poch. Terrassa a 01/02/2007.