Excel - Duda acerca de variables

 
Vista:
Imágen de perfil de Jorge

Duda acerca de variables

Publicado por Jorge (39 intervenciones) el 19/09/2021 10:14:30
Tengo una duda y recurro a los expertos. Planeo hacer un pequeño sistema de acceso de usuario para ser implementado en un libro compartido para que sea trabajado por varios usuarios.

Como todo acceso de usuario cuenta con:

- Usuario
- Contraseña

El nombre de usuario debería ser recordado en una variable junto con el nivel ("Administrador", "Transcriptor", "Observador") que ya estaría establecido en alguna otra parte del documento. Ahora si uso por ejemplo una variable que me almacene el nombre de usuario y otra para que almacene el nivel, cuando ingrese el primer usuario al sistema la variable no tendrá problema en recordarlo, pero si ingresa otro usuario mas al sistema, creo que habría un choque ya que la variable dejaría de almacenar el dato anterior para almacenar el dato nuevo.

¿Habría alguna manera para que esto no ocurra?

He de mencionar que estoy iniciando este proyecto y buscó orientación acerca del tema ya que en ocasiones anteriores e creado accesos de usuario y siempre tengo este problema.
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 Nolberto
Val: 84
Ha aumentado su posición en 6 puestos en Excel (en relación al último mes)
Gráfica de Excel

Duda acerca de variables

Publicado por Nolberto (121 intervenciones) el 19/09/2021 19:07:18
No es buena idea desarrollar un sistema en excel que sera trabajado por varios usuarios a la vez, con mas razón si contiene macros.

De hecho al trabajar de la manera regular con excel ( tecleando directo en las celdas ), se suelen tener conflictos cuando se trabaja de manera colaborativa, al trabajar con macros el problema es aun mayor, esto se da principalmente al agregar datos a las hojas desde las macros ( formularios por ejemplo ).

Sucede que se puede sobrescribir informacion, duplicar registros y una serie de problemas por los que no vale la pena trabajar con archivos compartidos, incluso puede simplemente obtener un mensaje de error al trabajar de este modo.

La solución a esto es que haga la lógica del programa en un archivo y los datos en otro, básicamente el archivo que tiene la lógica abrirá el archivo de datos, ejecutara el proceso en cuestión y lo cerrara al terminar, de este modo, cada usuario puede tener una copia del archivo que tiene la lógica de programacion y cada uno tendrá acceso al archivo que tiene los datos, por lo que se tiene que programar una forma de saber si el archivo esta abierto o no, cada usuario ejecutara sus procesos hasta que el archivo no este en uso.

Lo anterior se puede hacer mediante sentencias SQL con ADODB, es una librería que viene integrada en vba excel, por lo que se puede trabajar casi como un motor de bases de datos puro y duro, ya sea con archivos excel o access, mediante adodb, cada vez que se ejecute algún proceso en el que hay que leer o escribir en la base de datos, se realiza una petición a esta, si en ese momento la base de datos esta abierta, se esperara hasta que este disponible y ejecutara el proceso.

Dependiendo de la forma en que se ha programado y el tamaño de la base de datos, los procesos serán mas o menos rápidos, si no son muchos usuarios, esto no debería ser problema y los procesos serán aceptablemente rápidos.

Desde excel puede escribir y recuperar datos en archivos access, por lo que puede ser buena idea tener la lógica en excel y los datos en archivos access (puede tener ambas ya sea en excel o access), en excel no se puede hacer "DELETE" con sentencias SQL, con access si, ademas, access esta mas cerca de una base de datos real que excel, por lo que es bueno considerarla.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Jorge

Duda acerca de variables

Publicado por Jorge (39 intervenciones) el 19/09/2021 19:16:00
Y conoce algún videotutorial para poner en práctica esta recomendación porque si vamos al caso es cierto, excel puede disimular el papel de una base de datos pero como tal no es una base de datos... Aun así hay métodos para trabajar la aplicación en el entorno deseado, obviamente tal como dice... Este sistema lo manejarán máximo 5 o 6 personas de la cual diariamente podrian conectarse la mitad.
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 Nolberto
Val: 84
Ha aumentado su posición en 6 puestos en Excel (en relación al último mes)
Gráfica de Excel

Duda acerca de variables

Publicado por Nolberto (121 intervenciones) el 19/09/2021 21:18:07
Una búsqueda de "adodb en vba" o" ado en vba excel", debería darle muchos resultados, habrá que leer mucho al respecto, ademas, es importante saber algo de sql, tanto la lectura, escritura, actualización y eliminación de datos ser realiza con el lenguaje sql, esto al trabajar con la librería ADO en excel.

La documentación oficial de microsoft es un buen punto de partida para esto, seguramente en sus resultados de búsqueda obtendrá enlaces a esa informacion.

También puede seguir trabajando con rangos de excel para leer y escribir datos, pero si desea trabajar con varios usuarios a la vez, sera necesario primero hacer esa lectura y escritura en otro archivo especifico para eso, no en el que tiene la lógica de programacion, adicionalmente, hay que buscar una forma de comprobar primero si el archivo de base de datos esta abierto, si esta ocupado, entonces no se puede hacer el proceso, tendrá que esperar hasta que el otro termine.

Lo anterior es porque quizá le tome mucho tiempo aprender sql y conocer la librería ADO.

Por cierto, excel si aplica como una base de datos, incluso el registro de ventas que se hace en una libreta, es una base de datos, pero no es un motor de base de datos puro y duro como si lo es mysql, postgresql, sql server, etc.
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