Abrir Informe con botón desde Formulario Access

Quisiera saber si es posible abrir un Informe desde un formulario que proviene de una Consulta, pero esta consulta es algo particular, ya que para abrirla nos pide un dato de un campo concreto (Id). Al abrir el Informe también aparece la misma ventana pidiendo igualmente este Id. Lo que yo quiero es que directamente se copie el Id en esta ventana de entrada sin que tenga que teclearla y se abra el informe correspondiente a este Id de manera automática.

1

1 respuesta

Respuesta
2

Yo quitaría ese criterio del informe, ten en cuenta que en el botón puedes poner los criterios que quieras. Por ejemplo

Docmd.openreport"clientes",acpreview,,"Pais=""Alemania"" or nombrecliente="" Juan"" and ciudad='" & me.ciudad & ""

Si, es verdad... también lo he pensado, pero si elimino ese criterio de la consulta me puede dar algo así como varios millones de registros, por eso coloqué esa condición

De todas formas en Filter Name he indicado este criterio "Id del empleado=" &Texto21 (que es el cuadro del formulario que tiene el Id) pero me devuelve un mensaje de Error de sintaxis.

Ahora mismo no tengo oportunidad de mirarlo, pero si te parece, Icue, luego lo consulto y te digo que es lo que tengo puesto más concretamente. La verdad es que lo he probado tanto por WhereCondition como por FilterName, pero en los 2 casos me da error.

Creo que esto va a ser imposible.

Vamos a ver si consigo explicarme. Primero, vamos a suponer que el informe esta construido con la tabla Empleados. Da igual que esta tabla tenga los registros que sea, cuando le das la instrucción de abrir o imprimir, ya le estás limitando los registro que vaya a mostrar. Por ejemplo, supongamos que quieres ver el informe de los empleado que trabajan en el TurnoA. Con poner en el botón

docmd.openreport"empleados",acpreview,,"turno=""turnoA""

Sólo te abrirá el informe con aquellos empleados que tengan ese turno.

En caso de que en el formulario hubiera un control(sea cuadro de texto, sea combinado, etc) donde te aparezca el turno, lo podrías poner como

docmd.openreport"empleados",acpreview,,"turno='" & me.turno & "'"

Cuando una variable es numérica la expresión es

.........................." turno= "& me.turno & ""

Si es texto es

......................." turno='" & me.turno & "'"

Es decir apostrofe comillas & y cierra comillas apostrofe comillas

En caso de que fuera fecha sería

........................turno=#" & me.turno & "#"

Vamos a suponer que quieres ver el informe de los empleados que tengan el turnoA y que tengan el pelo rubio

docmd.openreport"empleados",acpreview,,"turno='" & me.turno & "' and colorpelo=""Rubio"""

De todas formas, si quieres, repito, si quieres, haz una copia de la tabla, con datos inventados y me la mandas a [email protected] y la miro y te digo.

Si lo haces, en el asunto del mensaje pon tu alias Breaking, ya que si no sé quien me escribe no los abro.

Con respecto a la otra pregunta, si me permites un consejo, llama a los campos, objetos, controles, etc con los nombres juntos(ya se lo pondrás bien en las etiquetas). Primero, corres el peligro, por ejemplo, supongamos que, por error, has puesto en un campo Nombre Cliente. Te puedes volver loco al ver que no funciona nada y es que entre Nombre y Clientes hay dos espacios. Poniéndolo todo junto no te equivocas. Por otro lado, al ponerlo separado, en el código tienes que estar encerrándolo entre corchetes, o sea

[id del empleado]=....

Lo intentaré. Tendré que modificar algunas cosas en la consulta, pero probaré a ver que me sale. Respecto al campo Id... ¿se considera numérico? Sabemos que realmente es autonumérico, ya que se autoasigna cada vez que creamos un registro nuevo, pero a estos efectos, funciona igual que un numérico? es decir, sin comillas...

Como digo, lo probaré. Pese a todo, ya me estaba haciendo a la idea de conformarme con la ventana de la pregunta del Id, en la que si tecleo manualmente el Id me abre sin problema el informe correspondiente.

Ahora te quiero hacer otra pregunta: En cuanto se abre el informe, el formulario deja de estar maximizado a pantalla completa y se me queda en una ventana independiente. Esto se puede solucionar y que se mantenga maximizado el formulario?

Como digo, mi intención ahora es modificar la consulta, pero cuando lo consiga y me abra el informe desde la nueva consulta, ocurrirá lo mismo con la maximización?  ... Gracias de nuevo.

Por partes

Primero, sí, un autonumérico es un campo numérico, pero le dejas el control a Access, y es

Idloquesea=" & me.idempleado & ""

Por otro lado, en el evento Al cargar del formulario, o en el evento Al abrir, en esta caso da lo mismo puedes poner

Docmd. Maximize

¡Muchas Gracias! Ya te iré contando :-)

Buenos días, Icue..

Quería comentarte que por fin he logrado mi objetivo, y consigo abrir el informe desde el botón del formulario sin que me pregunte por el Id, solo pulso el botón y se abre. Para ello he modificado como me dijiste las propiedades del informe y las del botón, y ha ido muy bien. Me vas a reñir por una cosa, y es que he modificado también la consulta, (ya que como te dije soy muy afín a esta figura), suprimiendo para ello la pregunta de criterio y elaborando una nueva, que resulta muy extensa pero con una consulta de unión he podido simplificarla bastante. 

Así pues te estoy muy agradecido.

Lo que sigue sin salirme es lo de restaurar el formulario con su tamaño original maximizado. En la base de ejemplo que me mandaste lo haces perfecto pero a mi no me va por mas vueltas que le doy. Y es que he creado ya muchos proc. de evento probando y probando... y tengo hecho un lio enorme. Pero sirviendome de tu ejemplo espero solucionarlo.

Muchas gracias por todo. Un saludo

Tienes que perdonar, pero cuando le mando un ejemplo a alguien, a los dos o tres días lo elimino de la papelera de reciclaje, por eso ahora mismo no me acuerdo como era. Puedes hacerlo de muchas formas. Por ejemplo, vamos a suponer que desde un formulario quieres abrir un informe maximizado. En el evento del formulario donde abres el informe con docmd.openreport... le puedes añadir

Docmd. Runcommand accmdzoom100

O bien desde el propio informe, en sus propiedades-eventos-Al abrir le pones

Docmd. Maximize

En el caso del formulario, lo mismo, en el evento Al cargar o en el evento Al abrir puedes poner lo mismo.

¡Gracias! 

Lo miraré. La verdad es que tengo que agradecerte mucho tu ayuda. Me pasé muchas horas encabezonado en sacar una cosa que resultaba imposible y gracias a tus consejos lo logré. Gracias de nuevo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas