Botón que ejecuta dos consultas
Tengo un formulario de access con un botón que me ejecuta dos consultas, cada una de las cuales me pide que ingrese un nombre, que en este caso es el mismo, por lo que he de introducir dos veces el mismo nombre.
¿Cómo hago para que solo tenga que introducir el nombre una vez?
¿Cómo hago para que solo tenga que introducir el nombre una vez?
1 Respuesta
Respuesta de nilharto
1
1
¿El nombre que ingresas esta en el formulario? Si lo está es raro que te pase este error.. yo crearía otra caja de texto oculta que escribiera también el nombre ahí y que la segunda consulta tirara de esa caja de texto.. pero si no está en el formulario no hay más cachabas que escribirla dos veces, o crear una caja de texto que guarde esa variable nombre para utilizarla en ambas consultas.
El nombre que ingreso esta en el formulario. El formulario es para hacer el registro de usuarios, y tiene un subformulario donde ingreso una serie de actividades que realiza cada usuario. El botón del que hablo sirve para dar de baja a un usuario, y realmente ejecuta 3 consultas. La primera es de anexar, para traspasar los datos del usuario a otra tabla donde se almacenan los usuarios dados de baja; la segunda también de anexar traspasa los datos de las actividades a otra tabla que almacena las actividades de los usuarios dados de baja; y la tercera es una consulta de eliminar que borra el registro del usuario a dar de baja. Entonces me pide que ingrese el nombre dos veces, una por cada una de las consultas de anexar que ejecuta.
No se si me explico con claridad...
La verdad que no entiendo muy bien el procedimiento que me propones.
Gracias por la atención y la rapidez de respuesta.
No se si me explico con claridad...
La verdad que no entiendo muy bien el procedimiento que me propones.
Gracias por la atención y la rapidez de respuesta.
Es que si te pide el nombre es porque la consulta no debe estar bien planteada.. ¿me podrías escribir la consulta sql que te aparece? Simplemente es cambiar la vista de consulta a modo SQL y pasarme la instrucción a ver si conseguimos solucionarlo
Pues mira, el código de la primera consulta, que es la que anexa los datos de los residentes en otra tabla, es:
INSERT INTO [residentes trasladados] ( nombre, nacimiento, evaluacion, diagnostico, aptitud, vision, gafas, audicion, notas_alfabetizacion, alfabetizacion, habitos, avd, aivd, estado, socializacion, lenguaje, grupo, observaciones, observaciones_pai )
SELECT residentes.nombre, residentes.nacimiento, residentes.evaluacion, residentes.diagnostico, residentes.aptitud, residentes.vision, residentes.gafas, residentes.audicion, residentes.notas_alfabetizacion, residentes.alfabetizacion, residentes.habitos, residentes.avd, residentes.aivd, residentes.estado, residentes.socializacion, residentes.lenguaje, residentes.grupo, residentes.observaciones, residentes.observaciones_pai
FROM residentes
WHERE (((residentes.nombre)=[introducir el nombre del residente]));
el de la segunda, que es la que anexa los datos de las actividades es:
INSERT INTO [pai trasladados] ( nombre, codigo, actividad, nota1ev_junio, [%1ev_junio], ayuda1ev_junio, nota2ev_diciembre, [%2ev_diciembre], ayuda2ev_diciembre, ev_final, reprogramar, año, grupo )
SELECT [consulta pai].nombre, [consulta pai].codigo, [consulta pai].actividad, [consulta pai].nota1ev_junio, [consulta pai].[%1ev_junio], [consulta pai].ayuda1ev_junio, [consulta pai].nota2ev_diciembre, [consulta pai].[%2ev_diciembre], [consulta pai].ayuda2ev_diciembre, [consulta pai].ev_final, [consulta pai].reprogramar, [consulta pai].año, [consulta pai].grupo
FROM [consulta pai]
WHERE ((([consulta pai].nombre)=[introducir el nombre del residente]));
y el de la tercera, que es la que elimina el registro es:
DELETE residentes.nombre, residentes.nacimiento, residentes.evaluacion, residentes.diagnostico, residentes.aptitud, residentes.vision, residentes.gafas, residentes.audicion, residentes.notas_alfabetizacion, residentes.alfabetizacion, residentes.habitos, residentes.avd, residentes.aivd, residentes.estado, residentes.socializacion, residentes.lenguaje, residentes.grupo, residentes.observaciones, residentes.observaciones_pai
FROM residentes
WHERE (((residentes.nombre)=[introducir el nombre del residente]));
De esta forma he de introducir el nombre 3 veces, no 2 como dije anteriormente. He probado a quitarle el [introducir el nombre del residente] de WHERE y buscar el registro en el formulario para entonces ejecutar las consultas, pero si lo hago así me elimina el registro que he buscado, y me anexa los datos de toda la tabla, es decir de todos los residentes.
La verdad que es un poco engorroso por que si me equivoco alguna de las 3 veces al introducir el nombre me provoca errores e incluso puedo perder información.
Muchas gracias de nuevo!
INSERT INTO [residentes trasladados] ( nombre, nacimiento, evaluacion, diagnostico, aptitud, vision, gafas, audicion, notas_alfabetizacion, alfabetizacion, habitos, avd, aivd, estado, socializacion, lenguaje, grupo, observaciones, observaciones_pai )
SELECT residentes.nombre, residentes.nacimiento, residentes.evaluacion, residentes.diagnostico, residentes.aptitud, residentes.vision, residentes.gafas, residentes.audicion, residentes.notas_alfabetizacion, residentes.alfabetizacion, residentes.habitos, residentes.avd, residentes.aivd, residentes.estado, residentes.socializacion, residentes.lenguaje, residentes.grupo, residentes.observaciones, residentes.observaciones_pai
FROM residentes
WHERE (((residentes.nombre)=[introducir el nombre del residente]));
el de la segunda, que es la que anexa los datos de las actividades es:
INSERT INTO [pai trasladados] ( nombre, codigo, actividad, nota1ev_junio, [%1ev_junio], ayuda1ev_junio, nota2ev_diciembre, [%2ev_diciembre], ayuda2ev_diciembre, ev_final, reprogramar, año, grupo )
SELECT [consulta pai].nombre, [consulta pai].codigo, [consulta pai].actividad, [consulta pai].nota1ev_junio, [consulta pai].[%1ev_junio], [consulta pai].ayuda1ev_junio, [consulta pai].nota2ev_diciembre, [consulta pai].[%2ev_diciembre], [consulta pai].ayuda2ev_diciembre, [consulta pai].ev_final, [consulta pai].reprogramar, [consulta pai].año, [consulta pai].grupo
FROM [consulta pai]
WHERE ((([consulta pai].nombre)=[introducir el nombre del residente]));
y el de la tercera, que es la que elimina el registro es:
DELETE residentes.nombre, residentes.nacimiento, residentes.evaluacion, residentes.diagnostico, residentes.aptitud, residentes.vision, residentes.gafas, residentes.audicion, residentes.notas_alfabetizacion, residentes.alfabetizacion, residentes.habitos, residentes.avd, residentes.aivd, residentes.estado, residentes.socializacion, residentes.lenguaje, residentes.grupo, residentes.observaciones, residentes.observaciones_pai
FROM residentes
WHERE (((residentes.nombre)=[introducir el nombre del residente]));
De esta forma he de introducir el nombre 3 veces, no 2 como dije anteriormente. He probado a quitarle el [introducir el nombre del residente] de WHERE y buscar el registro en el formulario para entonces ejecutar las consultas, pero si lo hago así me elimina el registro que he buscado, y me anexa los datos de toda la tabla, es decir de todos los residentes.
La verdad que es un poco engorroso por que si me equivoco alguna de las 3 veces al introducir el nombre me provoca errores e incluso puedo perder información.
Muchas gracias de nuevo!
¿Dónde pones [introducir el nombre del residente] porque no pones el nombre del cuadro de texto que corresponde con el nombre del residente? Es que sino siempre te pide el nombre del residente porque la consulta no encuentra ese campo en tu formulario.. supongamos que en tu formulario el nombre del residente lo escribes en [Texto5] entonces debes poner
WHERE (((residentes.nombre)=[Texto5])); asi la consulta recogerá el nombre que hayas escrito en ese campo.
WHERE (((residentes.nombre)=[Texto5])); asi la consulta recogerá el nombre que hayas escrito en ese campo.
Pues hago lo que me cuentas y no sale lo que queríamos... en el formulario el nombre se escribe en la Etiqueta1, cuyo cuadro de texto se llama NOMBRE. He probado a poner [Etiqueta1], y a parte de pedirme el nombre del residente también me pide que especifique Etiqueta1. Y si pongo [NOMBRE] solo me pide que ingrese una vez el nombre (en el momento que ejecuta la consulta de anexar relativa a las actividades, es decir, la segunda), y el problema es que me anexa y elimina todos los registros de las tablas, es decir, de todos los residentes. Lo que he puesto ha sido lo siguiente:
Consulta 1:
WHERE (((RESIDENTES.NOMBRE)=[NOMBRE]));
Consulta 2:
WHERE ((([Consulta PAI].NOMBRE)=[NOMBRE]));
Consulta 3:
WHERE (((RESIDENTES.NOMBRE)=[NOMBRE]));
Consulta 1:
WHERE (((RESIDENTES.NOMBRE)=[NOMBRE]));
Consulta 2:
WHERE ((([Consulta PAI].NOMBRE)=[NOMBRE]));
Consulta 3:
WHERE (((RESIDENTES.NOMBRE)=[NOMBRE]));
Creo que etiqueta no te vale, tiene que ser cuadro de texto.. etiqueta es cuando quieres escribir algo en un formulario pero que mantenga ese valor
Ya lo puse con cuadro de texto, como lo dije antes (poniendo nombre, que es el cuadro de texto donde esta el nombre), y solo me pide que ingrese una vez el nombre (en el momento que ejecuta la consulta de anexar relativa a las actividades, es decir, la segunda), y el problema es que me anexa y elimina todos los registros de las tablas, es decir, de todos los residentes.
Supongo que hay un error en algún sitio cuando me sigue pidiendo un nombre al ejecutar la segunda consulta, y aun así no consigo lo que quiero...
¿Alguna idea?
Supongo que hay un error en algún sitio cuando me sigue pidiendo un nombre al ejecutar la segunda consulta, y aun así no consigo lo que quiero...
¿Alguna idea?
- Compartir respuesta
- Anónimo
ahora mismo