Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: mbc en 10 Agosto 2009, 02:52 AM

Título: Condicional para elegir formulario con BD
Publicado por: mbc en 10 Agosto 2009, 02:52 AM
Estoy usando este pequeño script para el ingreso a un menu en dicho programa.
Set conn = New ADODB.Connection
   conn.ConnectionString = _
       "Provider=Microsoft.Jet.OLEDB.4.0;" & _
       "Data Source=" & db_file & ";" & _
       "Persist Security Info=False"
   conn.Open

   ' Look up the user name/password.
   statement = "SELECT COUNT (*) FROM Users WHERE " & _
       "UserName='" & Replace(txtUserName.Text, "'", "''") & "' AND " & _
       "Password='" & Replace(txtPassword.Text, "'", "''") & "'"
   Set rs = conn.Execute(statement)

   ' See if we got anything.
   If CLng(rs.Fields(0)) < 1 Then
       ' There is no match.
       ' Do not allow the login.
       Unload Me
       MsgBox "Invalid user name/password."
   Else
       ' There is a match.
       ' Display the program's main form.
       Form1.Show
       Unload Me
   End If

   rs.Close
   conn.Close


El problema esta es en que me pidieron, tener varios niveles de acceso, usuario estandar y usuario admin.

En la base de datos agregue un campo llamado tipo, donde los valores son numerico, 1=admin y 2=estandar

Quiero saber como construir un condicional para que cuando el user sea admin cargue el form2 y cuando sea estandar el form3. Internamente debe verificar que tipo de numero hay en el campo Tipo.
Saludos
Título: Re: Condicional para elegir formulario
Publicado por: cassiani en 10 Agosto 2009, 03:18 AM
ok, hay varias formas, puedes por ejemplo usar este mismo bloque
' See if we got anything.
    If CLng(rs.Fields(0)) < 1 Then
        ' There is no match.
        ' Do not allow the login.
        Unload Me
        MsgBox "Invalid user name/password."
    Else
        'AQUI
    End If


y donde te señale, haces una nueva consulta a la base de datos y extraes el valor del campo, luego comparas y das el acceso dependiendo del caso, o puedes obtener el valor antes, en el query inicial y luego haces la comparación donde te especifique anteriormente.

saludos
Título: Re: Condicional para elegir formulario con BD
Publicado por: mbc en 10 Agosto 2009, 03:19 AM
Si sabia que era ahi, pero no se mucho de las consultas a base de datos...
Título: Re: Condicional para elegir formulario con BD
Publicado por: jack06 en 10 Agosto 2009, 03:46 AM
wenas mas abajo ya habian hablado de este incluso deje un pekeño ejemplo

http://www.megaupload.com/?d=9QSOU62Y (http://www.megaupload.com/?d=9QSOU62Y)

Salu2....
Título: Re: Condicional para elegir formulario con BD
Publicado por: mbc en 10 Agosto 2009, 04:01 AM
Cita de: jack06 en 10 Agosto 2009, 03:46 AM
wenas mas abajo ya habian hablado de este incluso deje un pekeño ejemplo

http://www.megaupload.com/?d=9QSOU62Y (http://www.megaupload.com/?d=9QSOU62Y)

Salu2....


Hola que tal gracias por tu programa.. ya lo estoy verificando... dejame ver si me funciona...
Título: Re: Condicional para elegir formulario con BD
Publicado por: mbc en 10 Agosto 2009, 05:26 AM
Bueno he tratado de agarrar el valor de nivel.... pense que seria algo asi....
Citarstatement = "SELECT COUNT (*) FROM Users WHERE " & _
        "UserName='" & Replace(txtUserName.Text, "'", "''") & "' AND " & _
        "Password='" & Replace(txtPassword.Text, "'", "''") & "'"
    Set rs = conn.Execute(statement)
   VerN = rs.Fields("Nivel")
    ' See if we got anything.
    If CLng(rs.Fields(0)) < 1 Then
        ' There is no match.
        ' Do not allow the login.
        Unload Me
        MsgBox "Invalid user name/password."
    Else
        If VerN = 1 Then
        Form1.Show
        Unload Me
        Else
        Form2.Show
        Unload Me
        End If

lo que esta en rojo fue lo que trate de arreglar... pero creo que la para capturarlo tendría que ser desde la consulta en SQL
Título: Re: Condicional para elegir formulario con BD
Publicado por: Angeldj27 en 10 Agosto 2009, 14:42 PM
Creo que eso te quedaria mejor con el componente ado pero bueno, cuando haces la primera consulta le asignas a una variable el valor del campo nivel del user y pass que has combalidadop y despues haces una condicion y llamas uno o el otro form y listo  :P
Título: Re: Condicional para elegir formulario con BD
Publicado por: cassiani en 10 Agosto 2009, 16:17 PM
prueba así

Código (vb) [Seleccionar]
Option Explicit

Public rst    As ADODB.Recordset
Public sSQL   As String
Public sConex As String

Private Sub Command1_Click()
    sSQL = "SELECT * FROM Users WHERE " & _
        "UserName='" & Replace(txtUserName.Text, "'", "''") & "' AND " & _
        "Password='" & Replace(txtPassword.Text, "'", "''") & "'"
   
    rst.Open sSQL, sConex, adOpenDynamic, adLockOptimistic
        If rst.EOF And rst.BOF Then
            MsgBox "Invalid user name/password."
        Else
            Select Case (rst!Nivel)
                Case 1:
                    Form1.Show
                Case 2:
                    Form2.Show
            End Select
        End If
    rst.Close
End Sub

Private Sub Form_Load()
    Set rst = New ADODB.Recordset
    sConex = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Replace(App.Path & "\db.mdb", "\\", "\")
End Sub


obviamente hay mejores formas de trabajar