La Web del Programador: Comunidad de Programadores
 
    Pregunta:  5096 - PASS EN VISUAL BASIC CON SQL SERVER A TRAVES DE OBDC
Autor:  Pablo Ormeño
Tengo un gran problema al conectar la Visual Basic con la base de datos ya que tengo que pedirle al usuario su login y su pass, y eso me genera un problema ya que SQL Server al recibir un login o un pass malo manda un mesaje de error no un error al programa y despues manda su propia ventana de login y pass.
Ahora, mi pregunta es: ¿Cómo puedo hacer para interceptar ese error y manda "yo" el error, y pedir "yo" el login con el pass?...
Gracias

  Respuesta:  Rogelio González Quirós
Bueno lo que yo sujiero es sencillo, desaparecer el ODBC, solo utilizar la direccion IP, del servidor SQL. Talvez el problema es del ODBC, y no del SQL Server. Mi opcion es utilizar una conexión directa con el servidor por ADO. Utilizando un string de conexción adecuado, con pass y login.

  Respuesta:  Javier
Yo estoy trabajando con VB6.0 y SLQ server 7.0 y no tengo ningún problema.
La versión del SLQ driver es 3.70.06.23.
Por si te sierve te pongo como estoy realizando la conexión
conDB --> variable de conexion ADODB
strEnvironment --> Nombre del ODBC que uso
struid --> Usuario
strpwd --> Password
strDatabase --> Base de datos del SQL server a la que quiero acceder.
conDB.Open "PROVIDER=MSDASQL;dsn=" & strEnvironment & _
";uid=" & struid & ";pwd=" & strpwd & ";database=" & strDatabase & _
";OLE DB Services= -2"

En el caso de mandar una password incorrecta me devuelve el error -2147217843 y no hace nada. Lo puedo manejar yo mismo.

Si esto no te sirve, una posible solución aunque te de mas trabajo podría consistir en lo siguiente
(1) Tener una tabla de usuarios donde guardes de forma encriptada la password del usuario.
(2) Tener un usuario genérico en el sistema con el que te conectes y compruebes contra tu tabla si el usuario es ok. Si lo es desconectas el usuario genérico y conectas el que te han dado.
(3) Cuando el usuario quiere cambiar la password se cambia tanto en el servidor como en la tabla.

Un saludo