Actualización de columna si\no, al validar formulario.

Estoy realizando un bd en access 2007 sencilla pero hay algo que no consigo hacer.
Explico la bd.
Consiste en un registro de los prestamos del maerial de almacén teniendo un control del material disponible de quien tiene el material prestado.
Consta de tres tablas
1.- Usuarios. Id_Usuario, Nombre, Apellidos, Sección.
2.- Material. Id_Material, Producto, Famila_Producto, Diponible (si\no)
3.- Prestamos. Id_Prestamo, Id_Producto, Id_Usuario, Fecha_Salida, Fecha_entrada
Lo que quiero hacer es que al insertar un préstamo en un formulario de la tabla prestamos se atualice la columna disponible de la tabla prestamos. El formulario tiene un menú despegabe en Id_Producto que coge la referencia de una consulta en la cual solo aparecen los prestamos que tienen el valor null en fecha de entrada, así consigo que los productos que aparecen en el menú solo sean los que están prestados; supongo que lo correcto seria que lo cogiera de material filtrado la columna disponible, pero ahora mismo tengo que actualizar disponible manualmente y es muy lento y pesado.
He insertado un código sql en el botón de ejecución del formulario, es el siguiente:
UPDATE material SET disponible= false WHERE Id_Producto IN (SELECT Id_Producto FROM Consulta_Pendientes)
El problema es que me al ejecutarlo me pregunta el Id que quiero actualizar, ingeso * ya que los valores pueden ser múltiples, Pero me actualiza todos los productos estén seleccionados o no.
Creo que el problema viene de que coge el valor del menú desplegable pero no quiero quitarlo por que es necesario.
¿Cómo puedo hacer que solo se actualicen los valores que he seleccionado en el formulario?
No se si me he expresado bien espero que entendáis mi pregunta.

1 respuesta

Respuesta
Vamos a ver, ese update lo haces desde una consulta, desde un runsql...
Si lo que haces es esto:
docmd.runsql("UPDATE material SET disponible= false WHERE Id_Producto IN (SELECT Id_Producto FROM Consulta_Pendientes")
Evidentemente te actualizara todos los registros, pega el código que ejecutas.
Si solo quieres actualizar el material que te sale en pantalla debes añadir:
docmd.runsql("UPDATE material SET disponible= false WHERE Id_Producto IN (SELECT Id_Producto FROM Consulta_Pendientes) and id_material=" & str(me!id_material)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas