** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - variable publica
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradovariable publica

 Responder Responder
Autor
Mensaje
Kublai Ver desplegable
Habitual
Habitual


Unido: 11/Julio/2020
Localización: Murcia
Estado: Sin conexión
Puntos: 162
Enlace directo a este mensaje Tema: variable publica
    Enviado: 11/Julio/2020 a las 12:16
Hola a todos.
Soy nuevo en el foro y también muy novato con el VBA. Os ruego un poco de paciencia si mis consultas os parecen demasiado obvias o simples.
Tengo un problemilla al rular un módulo asociado a un botón de comando de un formulario de access: declaro pública una variable tipo cadena, le doy valor y luego quiero que me la reconozca un informe, para incluirla en él.
El problema es que no se cómo hacer esa segunda parte: incluir la cadena en el informe. No se qué tipo de objeto emplear ni cómo.
Os pego el código que llevo escrito en el módulo:

Option Compare Database
Public variablepublica As String

Private Sub Comando155_Click()
variablepublica = RTrim(Objeto) & " TEXTOTEXTOTXTO " & RTrim(Perceptor) & " HOLAHOLAHOLAHOLA " & RTrim(NIF)
'MsgBox variablepublica
DoCmd.OpenReport "Informe1"

End Sub

Muchas gracias por vuestra ayuda
Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3523
Enlace directo a este mensaje Enviado: 11/Julio/2020 a las 14:28
Hola.
Bienvenido al foro.
1º.-Las variables públicas se han de declarar en un módulo independiente. Sí se hacen en un "formulario", en un principio sólo sirven para el formulario.
2º.-Las variables públicas no se reconocen directamente en los controles de un informe, hay que "encontrarlas" a través de una función o en el VBA del informe
3º.-Para pasar valores de un formulario a un informe, cabe la posibilidad de hacerlo a través del "openarg" que es el último parámetro que se puede enviar con docmd.opereport.......
4º.-.....
Espero que ayude a solucionar la duda
Ya comentas
Un saludo a todos
Arriba
Kublai Ver desplegable
Habitual
Habitual


Unido: 11/Julio/2020
Localización: Murcia
Estado: Sin conexión
Puntos: 162
Enlace directo a este mensaje Enviado: 12/Julio/2020 a las 08:04
Publicado originalmente por prga prga escribió:

Hola.
Bienvenido al foro.
1º.-Las variables públicas se han de declarar en un módulo independiente. Sí se hacen en un "formulario", en un principio sólo sirven para el formulario.
2º.-Las variables públicas no se reconocen directamente en los controles de un informe, hay que "encontrarlas" a través de una función o en el VBA del informe
3º.-Para pasar valores de un formulario a un informe, cabe la posibilidad de hacerlo a través del "openarg" que es el último parámetro que se puede enviar con docmd.opereport.......
4º.-.....
Espero que ayude a solucionar la duda
Ya comentas
Un saludo a todos

Hola prga. Ante todo, gracias por tu ayuda.
Siguiendo tus instrucciones, he creado esta función en un módulo independiente:

Public Function Devuelvevariablepublica() As String
Devuelvevariablepublica = variablepublica
End Function


El código del botón del informe que lanza el report queda así:

Option Compare Database
Public variablepublica As String

Private Sub Comando155_Click()
variablepublica = RTrim(Objeto) & " TEXTOTEXTOTXTO " & RTrim(Perceptor) & " HOLAHOLAHOLAHOLA " & RTrim(NIF)
MsgBox variablepublica
MsgBox Devuelvevariablepublica()
DoCmd.OpenReport "Informe1", acViewPreview

End Sub

Y en el informe creo un cuadro de texto y en el origen del control pongo:

=Devuelvevariablepublica()

Pero finalmente el cuadro de texto no devuelve nada. Queda en blanco. Tampoco devuelve nada el segundo MsgBox. Algo he debido hacer mal, seguro.

Además, no se utilizar el parámetro "openarg" que mencionas.
Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3523
Enlace directo a este mensaje Enviado: 12/Julio/2020 a las 10:17
Hola.
Con lo expuesto, creo que "Public variablepublica as string" no está definida en el sitio adecuado, tiene que estar en el módulo "estandar" para que sea verdaderamente pública.
Por otra parte lo del openargs está explicado en la ayuda del access y en el foro hay innumerables entradas en la que está, pero básicamente es:
para pasar el valor
DoCmd.OpenReport "nombrereport", acViewPreview, , , , elvalor

y para recuperar el valor , en el evento open del informe algo parecido a:

Private Sub report_Open(Cancel As Integer)
If IsNull(Me.OpenArgs) Then
''''aquí las cosas si no se pasa valor
  Else
'''aquí las cosas si se pasa valor
 End If
End Sub


Está escrito de memoria, así es que....
Ya comentas.
Un saludo a todos
Arriba
Kublai Ver desplegable
Habitual
Habitual


Unido: 11/Julio/2020
Localización: Murcia
Estado: Sin conexión
Puntos: 162
Enlace directo a este mensaje Enviado: 12/Julio/2020 a las 12:30
Conseguido!!!
La variable pasa al informe sin problemas.

Muchísimas gracias!!!
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable