Access ¿Cómo puedo realizar un sólo informe pero que puedas escoger si será en español o inglés?
Tengo un informe que a veces se puede presentar en español o en inglés, para ello he generado dos informes idénticos uno con el campo Descripcion y el otro con Descripcion_ing (los dos únicos campos de texto que deben cambiar) y he generado dos botones para abrir informes uno para cada idioma pero, ¿habría alguna posibilidad de solo tener un informe y según el idioma que le indique me presente el campo Descripcion o Descripcion_ing?
1 respuesta
Para sugerirte alguna solución con alguna posibilidad de que sea adecuada necesitaría conocer:
1.- ¿Descripcion y Descripcion_Ing, son controles en el Informe con origen de Datos en una Tabla o Consulta?
2.- Están en la Cabecera, ¿en el Detalle o en...?
3.- ¿Puedes poner una imagen del informe en Vista de diseño?
Y de momento creo que para mi o para otra persona que pueda contestar valdrá como punto de partida. Mis saludos >> Jacinto
Se me ha pasado comentarte que como inicio, puedes poner ese control, en el mismo sitio del Informe (Uno encima del otro), y al pulsar el Botón de abrir el Informe, elegir la opción.
Si Español >> Ocultas la de Inglés y viceversa. Un saludo >> Jacinto
Muchas gracias, lo ideal sería realizar el botón con la condición de ocultar o no el campo Descripcion o Descripcion_ing. Los campos provienen de la tabla Proyectos y a su vez de la consulta C_Proyectos. El informe se llama Por Cliente y estos campos están en el detalle. En estos momentos no tengo la imagen en vista de diseño, pero si con esta explicación no es suficiente en breve os la mando. Muchas gracias por tu ayuda, poner un control encima de otro y al pulsar el botón informe me diera la opción de elegir es lo que busco!
Partiendo de la base de que los Controles >> Descripcion y Descripcion_Ing, los tienes como dices en el Detalle del Informe, y que cada uno de ellos tienen un Origen de Datos en la Consulta C_Proyectos, mi propuesta es:
1.- En un Módulo Estandar declaras un variable Publica, que vamos a llamar >> ElIdioma
Public ElIdioma As String
Ahora y suponiendo que tu Botón se llame >> BtnImprimeInforme, en el Evento Click del mismo, pones éste código. Si lo copias y pegas no olvides "Activar" el Procedimiento de Evento, en Propiedades >>Eventos >> Al hacer Click >[Procedimiento de Evento]
Sub BtnImprimeInforme_Click() If MsgBox("Vas a Imprimir un Informe con dos Opciones de Idioma" & vbCrLf & vbCrLf & "¿Lo quieres Imprimir en Español?", vbYesNo) = vbYes Then ElIdioma = "Español" Else ElIdioma = "Inglés" End If End Sub
Después con el Informe en vista de diseño, pulsa en la sección de Detalle y busca en Propiedades >> Eventos >> Al dar Formato >> Pulsa el icono de la derecha de los tres puntos, y te va a aparecer un Formulario emergente con tres opciones. Elige la ultima y te aparecerá el Editor de VBA con éstas dos líneas:
Private Sub Detalle_Format(Cancel As Integer, FormatCount As Integer)
End Sub
Las completas con otras líneas y el Procedimiento completo te debe de quedar algo así.
Private Sub Detalle_Format(Cancel As Integer, FormatCount As Integer) If ElIdioma = "Español" Then Me.Descripcion.Visible = Yes Me.Descripcion_Ing.Visible = False Else Me.Descripcion.Visible = False Me.Descripcion_Ing.Visible = True End If End Sub
Espero te resuelva tu problema. Un aludo >> Jacinto
Muchas gracias, he seguido todos tus pasos pero no me lo ejecuta correctamente, pero no desesperes, soy novata y seguiré probando hasta conseguirlo no obstante, me surgen un par de dudas:
Entiendo que en el botón para imprimir informe, previamente a lo que me indicas, debería añadir el siguiente texto DoCmd.OpenReport "Por Cliente", acPreview, , Me.Filter
Si me pudieses indicar como quedaría todo entero me harías un favor.
Cuando he creado el Modulo titulado ElIdioma me ha quedado de la siguiente forma:
Option Compare Database
Public ElIdioma As String
No sé si debo indicarle alguna cosa más, ya que me da un error de compilación (Expected variable or procedure, not module). He probado también borrando el Option Compare Database y me sigue dando el mismo error.
Muchas gracias por tu ayuda!
Primero, lo último: Has provocado un Conflicto al llamar al Módulo igual que a la variable.
Puedes cambiar el Nombre del Módulo a por ejemplo: MdlVariables o MdlIdioma etc.
Si le llamas MdlVariables, en mi opinión es mejor por si necesitas declarar otras Variables Públicas
Segundo: Aunque no es imprescindible, yo por costumbre debajo de la línea Option Compare Database, siempre suelo poner >>
Option Explicit >> en todos los Módulos, sean Estandar, Asociados a Formularios, A Informes etc., así me obligo a declarar las variables antes de usarlas, pero eso depende de cada uno.
Evidentemente y aunque haya sido un lapsus mio, necesitas abrir el Informe, como bien dices, con la línea >> "... Entiendo que en el botón para imprimir informe, previamente a lo que me indicas, debería añadir el siguiente texto"
DoCmd. OpenReport "Por Cliente", acPreview,, Me. Filter o la que ya tengas para abrirlo.
Inmediatamente después del End If y lógicamente delante del End Sub.
Si aún así no sales, me comentas. Un saludo >> Jacinto
Puedes verificar que esté bien escrito el código ya que por un lado estamos escribiendo el Yes y por otro el True y no sé si este és el problema. Para tu información, me genera el cuadro de dialogo en el que puedo indicarle el idioma sin embargo me da un error de compilación, "method or data memeber not found" y el texto visible queda marcado en amarillo.
If ElIdioma = "Español" Then Me.Descripcion.Visible = Yes Me.Descripcion_Ing.Visible = False Else Me.Descripcion.Visible = False Me.Descripcion_Ing.Visible = True End If End Sub
Marta: Si me puedes hacer una captura de pantalla del código con la línea amarilla marcada veo si me da una pista. Un saludo >> Jacinto
Ahora no tengo delante la base de datos, pero me queda marcado el Visible en amarillo. Espero que te sirva.
Quizá sea más fácil realizar un combo con Español e Inglés, y según que opción escoja en un formulario, a través del botón para realizar el Informe, pueda insertar el código condicional que al seleccionar Español me muestre el campo Descripción y no me muestre Descripcion_ing y si elijo Inglés el me haga visible Decripcion_ing y no me muestre Descripción.
No sé, tu eres el experto, pero no quiero atormentarte más con mis dudas...
Marta: Miraré de hacer un hueco antes del fin de semana y te preparo un Ejemplo.
Cuando lo tenga, te pondré el enlace de descarga. Un aludo >> Jacinto
Jacinto, muchas gracias, y lo dicho, no quiero robarte mucho tiempo. La verdad es que esto para mí ya se ha convertido en un reto... así que si no puedes, no te preocupes!!!! Marta
Es como si no me reconociera la condición Visible, ya que he intentado poner tan solo en otro formulario Me. Titulo_ref.Visible = False y me lo sigue mostrando.
Marta: El Ejemplo igualmente lo preparo, pero es posible que lo que no reconozca no sea el Visible sino el Nombre del Control.
Imagino que el Nombre es >> Titulo ref y Access te pone el guión bajo.
Los nombres separados acaban dando problemas. Si tu caso es ese, prueba con >>
Me.[Titulo reg].Visible = True y lo mismo para los otros controles. Prueba y me comentas. Saludos >> Jacinto
Marta: Por si no has solucionado el problema, te adjunto el Link del Ejemplo que te he preparado.
http://www.mediafire.com/file/f17ooxgfh9w1o8u/InformeEntreFechasYDosIdiomas.rar
Lo he añadido a un ejemplo que ya tenía y que como verás contiene otras utilidades.
Para lo que tu exponías, el Informe se abre desde el Botón>> Informe dos Idiomas.
Si quieres verlo en Forma de diseño, se llama RptCumple2Idiomas, que a su vez tiene como Origen de Datos la Consulta >> QryCumple2Idiomas. Ya me contarás. Saludos >> Jacinto
- Compartir respuesta