Acceso a un ejecutable

Que tal amigo pues aquí dando molestias de nuevo, mira mi duda es esta tengo un programa hecho en visual basic y lo que quiero hacer es que cuando entre un usuario al programa me contabilice cuantas veces entra, y por ejemplo si nada más tiene permiso a entrar 3 veces al programa que la cuarta vez ya no entre al programa y me salga un mensaje o simplemente no lo deje entrar, no se si eso es en el código o como le podría hacer para que al ejecutable mnada más entre tres veces y a la cuarta no lo deje entrar al sistema me podrías ayudar la verdad estoy metido en un problema je je!

2 Respuestas

Respuesta
1
EN una tabla de la base de datos vas creando un registro cada vez que ingresa al programa, y cuando intente ingresar primero cuentas los registros y luego sabes si puede o no ingresar el programa.
Y me podrías decir más o menos como se hace eso, es que la verdad no tengo idea de que campo abiri en la base de datos y como hacer que cheque por favor me podrías ayudar
Revisa ADO en la página del guille
www.elguille.info
Respuesta
1
En tu mismo programa puedes generarlo. Si tienes una base de datos puedes manejarlo haciendo un update con el login del usuario y cuando el acceso sea igual a un determinado numero entonces ya no dejara entrar al user.
Dame mayor detalles si tienes b de datos o si quieres que solamente el programa lo maneje.
Si tengo una base de datos done tengo los campos de usuario y password y están en una ventana que le llamo login ahí checo si existe el usuario pues lo deja entrar al menu principal si no, pues manda un mensaje de que no tiene acceso al sistema, ojala me puedas decir como es es eso de hacer un update con el usuario y cheque un determinado numero de acceos para que ya no pueda entrar te agradecería mucho.
Debes crear un campo en tu tabla de 'usuarios' que se llame 'accesos' quizás de tipo integer o double, luego mediante una consulta sql creas el Update para ir actualizando las veces que accedió a tu sistema. Te paso más o menos el código para que lo adaptes a tu necesidad:
'-------------------------------
Dim sql$, contador%, rs as new adodb.recordset
sql = "select accesos from usuarios where login=' " & txtuser.text & " ' "
set rs = TuCadenaConexion.Execute (sql) 'selecciona el recordset y lo asigna
'verifica si tiene 3 accesos o mayor, entonces no permite acceder, caso contrario sigue ejecutando el update para el campo accesos
if rs(0) >= 3 then
msgbox "Acceso denegado por múltiples accesos"
exit sub
end if
contador = rs(0) + 1 'suma 1 a cada acceso autorizado que no sea mayor a 3
sql = "update Usuarios " & _
              "set accesos=" & contador & " " & _
              "where login=' " & txtUser.Text & " ' "
rs.close 'cierra el recordset anterior
set rs = TuCadenaConexion.Execute (sql) 'ejecuta el update en tu tabla usuarios
rs.close 'cierra el recordset luego de ejecutar
'----------------------------------
Tu cadena de conexion puede ser un Sub en un módulo, supongamos PUBLIC SUB Conexion  y las siguientes cadenas dependiendo que tengas o no contraseñas:
Set cnn = New ADODB.Connection
   'VARIABLES PARA BD CON CONTRASEÑA SI LO PREFIERES
    Dim BDPath$, BDPassword$ 'variables de conexion, base de datos y pass para abrir
    BDPath = App.Path & "\BD\Pruebas.mdb"
    BDPassword = "2009"
    cnn.CursorLocation = adUseClient
   cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & BDPath & ";Persist   Security Info=False;Jet OLEDB:Database Password=" & BDPassword
    'NOMBRE DE TU CONEXIÓN ODBC
    cnn.Open "CONEXION_ODBC"
    'BD SIN CONTRASEÑA
  cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & App.Path & "\BD\Pruebas.mdb;"
    Exit Sub
'-----------------------------
Muchas gracias por contestar mira he probado lo que me mandaste pero eh tenido problemas con lo de public sub conexión no me quedo claro eso de que con contraseña o sin, mi base de datos no maneja contraseña si me podrías ayudar a mandarme el código de públic sub conexión pero sin contraseña de base de datos, nada más la conexión normal, ya que mi base de datos no tiene contraseña, ojala me puedas ayudar ya que eres un gran experto.
La conexión podemos comenzar así:
Public Sub IniciarConexion()
Set cnn = New ADODB.Connection
  'BD SIN CONTRASEÑA
  cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & App.Path & "\BD\Pruebas.mdb;" 'aqui pones la direccion de tu bd o el nombre de tu bd ya que toma la dirección desde el App.Path
    Exit Sub
end sub
App.Path = directorio donde ejecutamos el archivo ejecutable 'exe'
Luego puedes alargar tu Data Source poniendo la dirección de tu bd si tienes subdirectorios.
Ya lo puse como me dijiste, y ya no me sale ni un error pero siempre que entro me sale el mensaje de "acceso denegado por múltiples accesos" si en el campo accesos nada más tengo 1 y se supone que hasta que tenga más de 4 es cuando me debe de salir el mensaje, y no me actualiza el campo cada vez que entra al sistema se queda igual el campo, mi duda es cuando checa cuantos accesos tiene si en esta sentencia:
sql = "select accesos from usuarios where login=' " & txtuser.text & " ' "
Nada más checa al usuario, pero mi duda es cuando checa el acceso si de aquí se va a la siguiente instrucción:
if rs(0) >= 3 then
msgbox "Acceso denegado por múltiples accesos"
exit sub
No se si estoy mal yo o es que le falta una linea de código
Pon un punto de interrupción en el evento click de tu botón y comienza a verificar lo que está mal o demás. Para mi que está todo correcto porque solamente haces el select sobre accesos (trata que sea tipo de datos 'número - entero largo') y solo ese campo es situado como recordset en rs(0) (que es el resultado que te debe traer como consulta). Incluso verifica tu tabla también.
Verifica eso y me cuentas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas