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.