
Hola, hoy les mostrare como crear un login sencillo y crear la base de datos cuando inicia el programa por primera vez para visual basic 6.
Empecemos
Primero
Creamos un formulario y le agregamos los siguientes items: 3 labels (Titulo de su programa, usuario y contraseña), 2 textbox (el primero para usuario le cambiamos el nombre que tiene por defecto de Text1 por txtusuario y el segundo para contraseña le cambiamos por txtcontraseña) y por ultimo 2 commandbutton (al primero de entrar le cambiamos el nombre de Command1 a cmdEntrar y el segundo para Salir le cambiamos el nombre para cmdSalir). Y el formulario les quedará mas o menos así:
Segundo
Creamos un Modulo para que cuando el programa se ejecute por primera vez y detecte que no tiene base de datos la cree junto con un usuario por defecto, que mas adelante podrá ser editado.
Dentro del módulo ponemos el siguiente código:
Global WK As Workspace
Global dbint As DAO.Database
Global rs As DAO.Recordset
Public respuesta As String
Sub crear_base()
Set dbint = CreateDatabase(App.Path & "usuarios.mdb", dbLangSpanish, dbversion25)
SQL = "create table Usuarios (Usuario text(30) not null, Contrasenia text(20) not null, Codigo counter not null constraint Codigo primary key) ;" 'Se definen las tablas que tendrá la base de datos
dbint.Execute SQL 'Se crea la tabla
Set dbint = OpenDatabase(App.Path & "usuarios.mdb"; ) 'Se guarda la base de datos en donde se encuentre el archivo ejecutable de su programa con el nombre de usuarios.mdb, archivo editable en Access 2007
SQL = "select * from usuarios"
Set rs = dbint.OpenRecordset(SQL)
rs.AddNew 'Se crea el usuario por defecto con su contraseña por defecto
rs!Usuario = "user"
rs!Contrasenia = "user"
rs.Update
rs.Close
dbint.Close
msj = "Se ha creado la base de datos: " & App.Path & "usuarios.mdb con éxito"
respuesta = MsgBox(msj, vbOKOnly + vbInformation, "Login Reporter"; )
End Sub
Tercero
Creamos otro formulario para mostrar cuando ingresemos para probar nuestro login
Cuarto
Pegamos este código en el formulario de login
Option Explicit
Dim cn As New ADODB.Connection, strCNString As String
Dim rs As New ADODB.Recordset
Dim Txt As String
Private Sub Form_Load()
On Error GoTo crear_base
Set WK = Workspaces(0)
Set dbint = WK.OpenDatabase(App.Path & "usuarios.mdb"; )
Exit Sub
crear_base:
respuesta = MsgBox("No existe la base de datos", vbOKOnly + vbCritical, "Login Reporter"; )
respuesta = MsgBox("¿Desea crearla?", vbOKOnly + vbOKCancel + vbQuestion, "Login Reporter"; )
If respuesta = vbOK Then
crear_base
Else
respuesta = MsgBox("El programa no puede funcionar sin la base de datos", vbOKOnly + vbExclamation, "Login Reporter"; )
If respuesta = vbOK Then
End
End If
End If
Exit Sub
Me.Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2
End Sub
Private Sub cmdEntrar_Click()
On Error GoTo ErrHandler
strCNString = "Data Source=" & App.Path & "usuarios.mdb"
cn.Provider = "Microsoft Jet 4.0 OLE DB Provider"
cn.ConnectionString = strCNString
cn.Open
With rs
.Open "Select * from usuarios where Usuario='" & txtusuario.Text & "' and Contrasenia='" & txtcontraseña.Text & "'", cn, adOpenDynamic, adLockOptimistic
If .EOF Then
MsgBox "El usuario y/o contraseña no son correctos", vbOKOnly + vbCritical, "Login System"
txtusuario.Text = ""
txtcontraseña.Text = ""
txtusuario.SetFocus
cn.Close
Else
Txt = "" & " " & UCase$(txtusuario.Text) & ""
MsgBox "Bienvenido" & Txt, vbOKOnly + vbExclamation, "Login System"
cn.Close
Unload Me
form2.Show
End If
End With
Exit Sub
ErrHandler:
MsgBox Err.Description, vbCritical, "Login System"
cn.Close
End Sub
Private Sub cmdSalir_Click()
Unload Me
End Sub
Quinto
Ejecutamos para probarlo
Si al ejecutarlo les sale un error como "No se ha definido el tipo definido por el usuario" no desesperen.
Fijense en lo siguiente, vayan a Proyecto > Referencias
Tienen que estar seguros de que esten marcadas las siguientes opciones
Les dejo un video para que vean que funciona
Espero les halla servido!!
Dudas comenten, mas adelante dejare el tutorial de como agregar, editar y eliminar usuarios desde visual basic 6 a una base de datos access.