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

Respuesta
2

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

Jacinto, muchas gracias voy a probar lo que me indicas y te comento, Marta.

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

Llevas toda la razón: El primer Yes es un True. Prueba y me comentas. Un saludo>> Jacinto

Continua dándome error...

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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas