Duda Visual Basic + Access

Iniciado por ka0s, 23 Agosto 2009, 02:55 AM

0 Miembros y 2 Visitantes están viendo este tema.

ka0s

Buenas gente:
Los molesto por lo siguiente. Estoy haciendo un login en VB y quiero que cuando ingrese un usuario y contraseña (que ya estan almacenadas en la base de datos creada en access) me lleve a otro formulario.

Por ahora lo único que tengo es la conexión a la base, pero lo que no tengo ni la más palida idea, es como hacer el IF que diga que si es igual al ID y al PASSWORD entonces muestre el otro formulario.

Private Sub Form_Load()
Dim cnn As ADODB.Connection
Dim sql As String
Dim rs As ADODB.Recordset
Dim ubicacion_base As String
' Crear la conexión
Set cnn = CreateObject("adodb.connection")
cnn.Errors.Clear
cnn.CursorLocation = adUseClient
ubicacion_base = App.Path & "\bdgym.mdb"
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ubicacion_base & ";Persist Security Info=False"
cnn.Open ' abre la conexión
sql = "select * from usuarios"
Set rs = New ADODB.Recordset 'genera la conexion
rs.Open sql, cnn 'accede a la bd


Les dejo el código que tengo y espero que me peudan dar una mano.

Saludos!

MCKSys Argentina

Hola!

Quizas lo que te convenga es usar la consulta que haces para averiguar si el usuario y la contraseña son válidos.

Por ej:

SELECT * FROM USUARIOS WHERE ((USUARIO = 'PEPE') AND (CLAVE = '123456'))

De esta forma, haces que el motor de bases de datos resuelva el tema por ti. Si devuelve algo, es porque el usuario y la clave existen.

Los dos valores (usuario y clave) son los que ingresa el usuario que quiere ingresar.

Saludos!


MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


seba123neo

Cita de: ka0s en 23 Agosto 2009, 02:55 AM
Buenas gente:
Los molesto por lo siguiente. Estoy haciendo un login en VB y quiero que cuando ingrese un usuario y contraseña (que ya estan almacenadas en la base de datos creada en access) me lleve a otro formulario.

Por ahora lo único que tengo es la conexión a la base, pero lo que no tengo ni la más palida idea, es como hacer el IF que diga que si es igual al ID y al PASSWORD entonces muestre el otro formulario.

Private Sub Form_Load()
Dim cnn As ADODB.Connection
Dim sql As String
Dim rs As ADODB.Recordset
Dim ubicacion_base As String
' Crear la conexión
Set cnn = CreateObject("adodb.connection")
cnn.Errors.Clear
cnn.CursorLocation = adUseClient
ubicacion_base = App.Path & "\bdgym.mdb"
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ubicacion_base & ";Persist Security Info=False"
cnn.Open ' abre la conexión
sql = "select * from usuarios"
Set rs = New ADODB.Recordset 'genera la conexion
rs.Open sql, cnn 'accede a la bd


Les dejo el código que tengo y espero que me peudan dar una mano.

Saludos!

por favor cambia ese codigo, no podes estar creando la conexion con un objeto asi, saca el CreateObject ese...si ya la tenes declarada a la conexion...no es recomendable declarar la conexion en el load del formulario , usa un modulo y ponelo en el Main...busca por ahi codigos de ADO y fijate como lo hacen asi lo adaptas.y es muy basica la pregunta diria yo , aparte hace no muhcos post atras ya preguntaron lo mismo y se resolvio el tema...buscalo.

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

ka0s

Oks, ahora voy a tratar de modificarlo y buscar lo que me dijiste.
Recién estoy empezando en esto de base de datos. Busqué muchas guías pero ninguna que encontré me servía.

Voy a buscar lo que me dijiste,
cualquier cosa que sea útil diganmela por favor.

Muchas gracias!

ka0s

La verdad seba123neo que no encontré cual era el que me dijiste.
Si me pudieras orientar o decirme que parte del código modificar sería útil.

Como asi también algun manual donde explique de 0 el manejo de base de datos ADO, pasandole consultas SQL sencillas como para lo que quiero hacer. Un LOGIN.

Desde ya muchas gracias

Saludos!

SRVAM

hola ka0s, mira, lo que seba te dice es que para abrir la base de datos, uses un modulo.bas y ahi te creas una funcion donde abres la base de datos.
luego en el form load o en el initialize haces la llamada a esa funcion, cuando introduzcas los datos de nomrbe de usuario y contraseña, haces un findfirst al nombre de usuario y si lo encuentra compruebas la contraseña, si la condicion es verdadera entonces cierras el formulario de login y haces un formx.show del formulario que quieras abrir ahora

saludos
C# Programmer

-Estudiante MCTS .NET Framework 3.5-

jack06

(̅_̅̅_̅(̅_̅_̅_̅_̅() ڪ €l $åßîø nø d nµn¢å tødø lø qµ£ Þî£n$å, Þ£®ø $î£mÞ®£ Þî£n$å tødø lø qµ£ d (̅_̅̅_̅(̅_̅_̅_̅_̅() ڪ

cassiani

Cita de: ka0s en 23 Agosto 2009, 05:26 AM
La verdad seba123neo que no encontré cual era el que me dijiste.
Si me pudieras orientar o decirme que parte del código modificar sería útil.

Como asi también algun manual donde explique de 0 el manejo de base de datos ADO, pasandole consultas SQL sencillas como para lo que quiero hacer. Un LOGIN.

Desde ya muchas gracias

Saludos!

y donde buscaste? acá han consultado eso cantidades de veces...
Citar*http://www.elguille.info/vb/ejemplos/ADO_sin_datacontrol.htm

Citar*http://foro.elhacker.net/programacion_vb/condicional_para_elegir_formulario_con_bd-t263791.0.html;msg1286482#msg1286482

ka0s

cΔssiΔnі si digo que busqué, busqué.... Encontré varios del Guille y de recursosvisualbasic pero no los entendía o no salía lo que quería hacer.

Jack06, muchas gracias!!
Era algo asi lo que buscaba.

Mil gracias a todos

Saludos!

ka0s

Buenas...
Vuelvo a molestar de nuevo por acá para no abrir un tema nuevo, ya que tiene que ver con lo mismo. VB y ACCESS.

Mi problema ahora es que ya pude hacer el login, pero quiero que cuando pase ese login, me lleve a otro form y en una grilla mostrar los valores que figuren en la tabla creada en ACCESS.

Tengo 2 formularios. FRMLOGIN y FORM1 (donde se encuentra la grilla)
Un módulo: Donde genero la conexión.

Pongo los sources para que me indiquen por favor que es lo que hago mal, ya que lo que pongo O ESTA MAL y me dice algo asi como que se requiere un objeto, o que esta abierto, o que esta cerrado, como también arroja a veces un ERROR donde dice que la memoria no se puede "read" y se muere mi VB.


MODULO
Código (vb) [Seleccionar]
Public CN As ADODB.Connection 'Variable para la conexion a la BDD

Sub Conectar()
    Dim RST As New ADODB.Recordset
    Set CN = New ADODB.Connection
    Set RST = New ADODB.Recordset
   
    With CN
        .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
                            App.Path & "\bdgym.mdb" & ";Persist Security Info=False"
        .CursorLocation = adUseClient
        .Open
    End With
End Sub


FRMLOGIN
Código (vb) [Seleccionar]
Dim RST As New ADODB.Recordset '\\ -- Variable de Tipo Recordset.

Private Sub cmdborrar_Click()
txtusuario.Text = ""
txtpassword.Text = ""
End Sub

Private Sub cmdlogin_Click()
'-------------LOGIN DE USUARIO-------------
'Busca en la tabla si existe el usuario.
RST.Find "id ='" & Trim(txtusuario.Text) & "'"
'Si no existe
If RST.EOF Then
    MsgBox "No existe el usuario indicado", vbExclamation, "ERROR"
Else
'Si existe, verifica los passwords y si es correcto nos lleva al formulario Principal
    If RST!Password = Trim(txtpassword.Text) Then
        Unload frmlogin
        Load Form1
        Form1.Show
    Else
        'Sino, muestra mensaje de error
        MsgBox "Clave incorrecta", vbExclamation, "ERROR"
    End If
End If
End Sub

Private Sub Form_Load()
Call GeneraConexion

End Sub

Sub GeneraConexion()
    Set RST = New Recordset
    Call Conectar
    RST.CursorLocation = adUseClient
    RST.Open ("SELECT * FROM Usuarios ORDER BY id"), CN, adOpenKeyset, adLockOptimistic
End Sub



FORM1
Código (vb) [Seleccionar]
Private Sub reload()
Set rst = New ADODB.Recordset
rst.Open sql, CN
Set grilla.Recordset = rs
grilla.Refresh
End Sub

Private Sub Form_Load()
sql = "select * from socios order by id"
Call reload
End Sub


Tengo ya creadas las 2 tablas en access, como dije el login lo pasa perfectamente.
Pero después no me muestra en la grilla la tabla SOCIOS.

Muchas gracias!

PD: Dejo una imágen del mensaje de error que hace que muera el VB



Ahora si, Saludos!