Jump to content
progster

[Resolvido] Login

Recommended Posts

progster

Boas.

Tenho andado de volta de um form login para vb, com BD em Access.

O código que tenho é:

   Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Base de Dados\Reparações.mdb")
        Dim cmd As OleDbCommand
        Dim sql = "SELECT Login,Password FROM Login WHERE Login = '" & txtLogin.Text & "' AND Password = '" & txtPassword.Text & "'"
        cmd = New OleDbCommand(sql, conn)
        conn.Open()
        Dim dr As OleDbDataReader = cmd.ExecuteReader()
        Try
            conn.Open()
            cmd.ExecuteReader()
        Catch ex As InvalidOperationException
            MsgBox(ex.Message)
        End Try
        Try
            If dr.Read = False Then
                MessageBox.Show("Acesso Negado...")
            Else
                MessageBox.Show("Acesso Autorizado - Bem Vindo!...")
                frmReparacoes.ShowDialog()
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
        If conn.State <> ConnectionState.Closed Then
            conn.Close()
        End If

Está a funcionar...

O problema é que me aparece antes de entrar para o form pretendido, uma msgbox com a seguinte mensagem: "The connection was not closed.The connection's current state is open".

Parece-me algo simples de resolver, eu é que não estou  a conseguir encontrar o sitio para colocar a linha.  :wallbash:

 conn.Close() 

se é que é este o problema.

Alguém me pode ajudar?!. Fico desde já agradecido.

Cumprimentos.


Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other sites
progster

Já está a funcionar. Tinha duas linhas de código a mais. Obrigado na mesma.


Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other sites
Andrepereira9

Apesar de já estar resolvido, o problema estava aqui, certo??

Mandavas abrir a conexão 2 vezes!!

conn.Open()
Dim dr As OleDbDataReader = cmd.ExecuteReader()
Try
conn.Open()


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
progster

Foi a mesma conclusão a que cheguei.

Já agora para o código anterior. A validação não está a correr muito bem.

O que tenho feito é:

    Private Sub Validacao()
        If txtLogin.Text.Length = 0 Then
            MsgBox("Introduza o Nome de Utilizador", MsgBoxStyle.Exclamation)
            txtLogin.Focus()
            If txtPassword.Text.Length = 0 Then
                MsgBox("Introduza a Password", MsgBoxStyle.Exclamation)
                txtPassword.Focus()
            End If
        End If
    End Sub

Onde é que devo fazer a chamada ao procedimento anterior?

Será que me podiam ajudar? Desde já fico novamente agradecido.

Cumprimentos.


Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other sites
Andrepereira9

Boas

Private Function Validacao()
        If txtlogin.Text.Length = 0 Then
            MsgBox("Introduza o Nome de Utilizador", MsgBoxStyle.Exclamation)
            txtlogin.Focus()
        End If

        If txtpassword.Text.Length = 0 Then
            MsgBox("Introduza a Password", MsgBoxStyle.Exclamation)
            txtpassword.Focus()
        End If

        If txtlogin.Text.Length <> 0 And txtpassword.Text.Length <> 0 Then
            Return True
        End If
End Function

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If Validacao() = True Then
            'Codigo para executar caso esteja tudo preechido
            MsgBox("Inserido")
        End If
End Sub


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
progster

Já está a funcionar.

Mas em:

End Function

Aparece um aviso com a seguinte msg:

Function 'Validacao' doesn't return a value on all code paths. A null reference exception could occur at run time when the result is used.

O que significa?


Não resolvo dúvidas por PM.

Share this post


Link to post
Share on other sites
Andrepereira9

Significa que devia de retornar um valor, mas que não retorna nada. 

Mete um 

Return False
antes do
End Function

A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.