Access - Variables globales - Conservar valores tras interrupción de código

 
Vista:
Imágen de perfil de Rubén

Variables globales - Conservar valores tras interrupción de código

Publicado por Rubén (13 intervenciones) el 27/03/2013 10:19:10
Hola a todos!

Estoy realizando una aplicación (Access 2003) en la que, desde código, empleo una serie de valores de los que hacen uso varios formularios, y que establezco por medio de variables globales desde un módulo.

El problema con el que me encuentro es que, si por algún motivo ha de deternerse la ejecución de código, esas variables se resetean.

Para paliar esto, lo que hago, a modo parche, es hacer llamadas desde ciertos puntos de los formularios a una función que las restablece (por ejemplo, al cargar el formulario), pero me da la impresión de que es eso... un parche, sobre todo porque son valores que no tienen que ser necesariamente estáticos (algunos sí, pero no todos).

He visto que para Access 2007 y superiores se puede usar el objeto "TempVars", pero mi base tiene que estar hecha en la versión de 2003, que es lo que hay y punto ;-)

¿Alguien sabe de alguna solución algo más elegante que estar reiniciando valores cada dos por tres desde un montón de sitios distintos o rezar para que el usuario no haga nada que provoque que se pare el código?

Muchas gracias por anticipado
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

Variables globales - Conservar valores tras interrupción de código

Publicado por Neckkito (1157 intervenciones) el 27/03/2013 10:49:43
Hola!

Como primer comentario te diré que si en el código ves alguna posibilidad de que "pueda pasar algo" yo te aconsejaría introducir un control de errores en el mismo (que no sé si ya lo estás utilizando). Así evitas que el usuario tenga la opción de darle al botón de "Depurar" y acceder al VBA.

Como soluciones yo te propondría dos posibilidades alternativas:

- La primera sería ir guardando o modificando esas variables en un formulario oculto. La sistemática sería parecida a la que se explica en este ejemplo: http://goo.gl/oUJ8F. Ojo, si lo miras en lo que tienes que centrarte es en la sistemática del proceso, no en para lo que sirve ese ejemplo en concreto.

- La segunda sería crearte una tabla auxiliar que te recogiera los nombres de las variables y sus valores. Al acceder a la BD resetearías todos los valores de la tabla y, a partir de ahí, pues accedes a la tabla cuando necesites leer un dato y/o escribes el valor en la tabla cuando necesites modificarlo.

En ambos supuestos (formulario y tablas) podrías crearte un módulo específico para gestionar esta información, con procesos o funciones para reseteo, escritura y lectura. Y operar en los códigos siempre haciendo referencia a los códigos de ese módulo.

A ver si estas ideas te sirven.

Un saludo,


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

Variables globales - Conservar valores tras interrupción de código

Publicado por Rubén (2 intervenciones) el 27/03/2013 12:11:42
Hola Neckkito!

Antes de nada, muchísimas gracias por contestar.
En efecto, la idea de la tabla es muy interesante, y de hecho es algo que también estaba considerando a la vez que escribía el post, lo que pasa es que me entraba alguna duda por la simple razón de que llamar a una variable en principio es "más rápido" que estar accediendo a una tabla de la base de datos y, por otro lado, cómo definiría esa tabla: varias tablas para cada tipo de datos (por ejemplo una para valores enteros, otra para valores de texto...) o bien una tabla con varios campos para, con un mismo nombre de variable, tener varios tipos de datos (entero, texto, doble, etc.)
Desde luego, y a la vista de tu atenta respuesta, creo que me voy a decantar por habilitar la tabla.
Un saludo y, de nuevo, muchas gracias!

Rubén
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

Variables globales - Conservar valores tras interrupción de código

Publicado por Neckkito (1157 intervenciones) el 27/03/2013 12:31:42
Hola!

Yo haría una una única tabla para recoger las variables, indicando su tipología a través del "Tipo de campo". No me complicaría la existencia con diferentes tablas. Incluso te será más cómodo para el código recordar el nombre de una sola tabla.

En cuanto al tema de velocidad... sinceramente creo que no notarás la diferencia entre el uso de variables globales o el acceso a tablas. Recuerda que si el recordset que busque en la tabla lo defines como dbOpenSnapshot o dbOpenForward (en el caso de lectura de datos, únicamente), el recorrido de registros es rapidísimo.

Saludos,

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
Imágen de perfil de Rubén

Variables globales - Conservar valores tras interrupción de código

Publicado por Rubén (13 intervenciones) el 27/03/2013 12:38:35
Pues muchas gracias otra vez!!

Un saludo,

Rubén
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