Access - Seleccionar tabla según valor de variable

 
Vista:

Seleccionar tabla según valor de variable

Publicado por Lluís (5 intervenciones) el 05/04/2013 11:56:11
Buenos días,

En primer lugar felicitarles, hace un tiempo me inicié en Access y me han ayudado mucho en mi, por ahora, corto aprendizaje.

Al caso, mediante programación necesito cambiar el valor TimeInterval de una tabla cuyo nombre tengo guardado en una variable. ¿Es posible?

No doy con la escritura correcta. He intentado varias formas como por ejemplo:

Forms!FrmSecundario2.TimerInterval = 0 (FrmSecundario2 es una variable String Pública)

Saludos y muchas gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Seleccionar tabla según valor de variable

Publicado por Neckkito (1157 intervenciones) el 07/04/2013 23:17:01
Hola!

Supongo que lo que estás pidiendo es cambiar el valor de la propiedad TimerInterval de un formulario.

Para modificar esa propiedad necesitas operar con el formulario en vista diseño.

Supongamos que el formulario en cuestión se llama F1, y que la variable que te recoge el valor que quieres establecer es vTimer.

El código que cambiaría ese valor sería:

...
Private Sub...
'Abrimos F1 en vista diseño, pero oculto
DoCmd.OpenForm "F1", acDesign, , , , acHidden
'Cambiamos el valor de la propiedad TimerInterval
Forms!F1.TimerInterval = vTimer
'Cerramos el formulario guardando los cambios
DoCmd.Close acForm, "F1", acSaveYes
'Y si quieres abrirlo normal inmediatamente...
DoCmd.OpenForm "F1"
End Sub
...

Saludos,


http://neckkito.siliconproject.com.ar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Seleccionar tabla según valor de variable

Publicado por Lluís (5 intervenciones) el 08/04/2013 10:47:08
Buenos días Neckkito,

Gracias por la respuesta pero creo que no me he explicado bién o suficiente.
Tengo varios formularios abiertos a la vez, todos ellos tienen el cronómetro activado por defecto en 50000. Lo que quiero es que sólo el formulario activo lo mantenga, necesito cambiar el valor de los demas a 0. Para ello guardo el nombre de 3 formularios secundarios abiertos en FrmSecundario1, FrmSecundario2 y FrmSecundario3 (no permito abrir más de 3 a la vez, hay bastantes más).
Sé cambiar el valor de un formulario del que conozca el nombre pero no de uno cuyo nombre recupero de una variable.
¿Cómo digo que al formulario cuyo nombre está guardado en la variable FrmSecundario1 hay que cambiarle el valor de TimerInterval a 0 al abrir el segundo formulario?
He probado:
- Forms![FrmSecundario1].TimerInterval = 0 ---> Access no puede encontrar el formulario FrmSecundario1
- Forms!([FrmSecundario1].value).TimerInterval = 0 ---> El carácter de declaración de tipo no coincide con el tipo de dato declarado (no sé bién a que se refiere)
etc...

Por otro lado ¿tiene que estar abierto en modo diseño? ¿no vale con vista normal? en tal caso, si está abierto, ¿se puede cambiar a diseño, modificar TimerInterval y volver a vista normal sin perder selecciones, filtros, etc...?

Saludos y muchas gracias de nuevo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Seleccionar tabla según valor de variable

Publicado por Neckkito (1157 intervenciones) el 08/04/2013 12:49:07
Hola!

Tu sistema resulta un poco confuso para mí. Te explico un procedimiento genérico que imagino podrás adaptar a tu BD.

No necesariamente necesitas abrir el formulario en vista diseño, pero si lo quieres hacer con el formulario abierto tendrás que "trabajar" en cada uno de los formularios (y si tienes muchos pues... paciencia).

Por si no te fuera bien te aconsejo que lo pruebes sólo con algunos para no pegarte la "matada".

En el módulo asociado a cada uno de los formularios (es decir, en todos los que son candidatos a ser "formularios secundarios") escribes el siguiente procedimiento público:

...
Public sub definoTimer (vTiempo as long)
me.timerinterval = vTiempo
End sub
...

OK.

Ahora, supongamos que vas a abrir el formulario X pulsando un botón. El nombre de X te viene dado por la variable FrmSecundario1 (doy por supuesto que, como comentas, es una variable global).

El código que se tendría que poner para cambiar su intervalo de cronómetro sería:

...
Public Sub...
DoCmd.Openform FrmSecundario1
Forms(FrmSecundario1).definoTimer 0 ' 0=cero, que es el intervalo de cronómetro que quieres establecer
End Sub
...

Por otra parte los formularios tienen un evento llamado "Al activar". Te lo recalco porque yo he comentado que llamaba al procedimiento al hacer clic sobre un botón, pero, evidentemente, puede llamarse desde cualquier otro lado. Como te decía, el evento "Al activar" se pone en marcha cuando haces que ese formulario sea el activo.

Finalmente, y dado que no acabo de entender tu sistema, quizá necesites establecer un control para saber si los formularios están efectivamente abiertos. El código que hace eso sería:

...
If currentproject.allforms(FrmSecundario1).IsLoaded then
'Código que necesites
End if
...

Así te evitas el error que te aparecería por intentar establecer un timerinterval en un formulario que no está abierto.

A ver si con estas ideas puedes conseguir lo que necesitas.

Un saludo,

Neckkito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Seleccionar tabla según valor de variable

Publicado por Lluís (5 intervenciones) el 08/04/2013 14:02:51
Hola Neckkito,

Creo que encontraré la solución con las opciones que me has mostrado.

Muchísimas gracias por tan inestimable ayuda.
Saludos.
Lluís.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar