VB 6 - Salidas

Tengo yo manera de identificar desde mi programa VB 6.0, que el usuario realizó una salida anómala, ya sea por que se le desconectó la red, se cayó la conexión a la base, ¿o por un error de Software?
Cada vez que entra un usuario, "toma" una licencia de la Base de Datos (Multiplataforma).
Es para que un usuario no este logueado desde 2 PC's diferentes...

2 Respuestas

Respuesta
1
No, ten en cuenta que si el sistema cae, no hay forma de avisarle a la base de datos (¿quién lo hace?) De todos modos puedes montártelo de forma que hagas una especie de time out (5, 10, 15) del tiempo que tu decidas, y cada vez que el usuario haga algo, actualizar la hora de entrada en la base de datos y hacer un proceso que valla comprobando los usuarios activos. Puede darse el caso de que entonces el usuario no pueda entrar en algún momento, pero es el único modo de asegurar que el usuario está activo. Este es más o menos el sistema de seguridad que se utilizan en las web de bancos.
Si no quieres complicarte la vida en actualizar la tabla en cada acceso a la base de datos también puedes poner un timer en cada formulario, de forma que cada 2,3 o 4 minutos actualice al usuario y compruebe los que no están actualizados (esto ultimo también se puede hacer con triggers). De esta forma no se puede dar el caso de que no puedan entrar una vez ha caído el sistema y el usuario puede irse a almorzar sin que le "tires" de la base de datos. Este último método es el que he utilizado yo para algo parecido.
En definitiva, la cuestión es que el programa no puede decir que está "muerto", pero si que puede dar "señales de vida"
Espero que tanto rollo te sirva de algo y ya me dices como te ha ido.
Gracias, lo voy a tener en cuenta cuando empiece con las pruebas...
También me sugirieron con la función del API, GetComputerName, algo voy a hacer con ambas cosas.
Respuesta
1
Primero tines que tener una tabla de usuarios, pero con un campo PC
Luego cada vez que el usuario ingrese, lee el nombre de la maquina con La API
getcomputername.
Example
Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Dim strString As String
'Create a buffer
strString = String(255, Chr$(0))
'Get the computer name
GetComputerName strString, 255
'remove the unnecesarry chr$(0)'s
strString = Left$(strString, InStr(1, strString, Chr$(0)))
''
Aplica el criterio correspondiente para los permisos.
Si tu quieres saber si se desconecto la red o se cayó la conexión a la base de datos captura el error.. revisa on error .La descripción la puedes guardar en un archivo.
Por software es difícil porque el programa te lo cierra. Nunca lo he intentado.
Gracias, me es muy útil, la tabla de Usuarios, la tenía, agregándole el campo i encriptandolo, voy a solucionar el problema de seguridad

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas