williamjda Posted September 19, 2012 at 03:17 PM Report #475897 Posted September 19, 2012 at 03:17 PM (edited) Olá amigos bom dia. Estou a desenvolver um aplicativo simples no vb que utiliza login de usuarios cadastrados no BD Sql. Criei um Modulo com o seguinte código: Imports System.Data.SqlClient Imports System.Data ---------------------------------------------------- Module conexao Public con As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\BD_Dados\BD_dadosf.mdf;Integrated Security=True;User Instance=True") End Module E no botão login o seguinte: Imports System.Data.SqlClient Imports System.Data ----------------------------------------------------- Public Class Login Private Sub BT_login_Click(sender As System.Object, e As System.EventArgs) Handles BT_login.Click Dim cmd As SqlCommand Dim dr As SqlDataReader Try con.Open() cmd = New SqlCommand("Sesion", con) cmd.CommandType = 4 With cmd.Parameters .AddWithValue("@LoginUser", txtLoginUser.Text.ToString) .AddWithValue("@SenhaUser", txtSenhaUser.Text.ToString) End With dr = cmd.ExecuteReader If dr.HasRows = True Then MsgBox("Bem vindo", vbInformation) sistema.Visible = True Me.Visible = False Else MsgBox("Dados Incorretos", vbInformation) txtLoginUser.Text = "" txtSenhaUser.Text = "" txtLoginUser.Focus() End If Catch ex As Exception : MsgBox(ex.Message) End Try con.Close() End Sub O problema é que quando eu clico no botão login aparece a seguinte mensagem abaixo: ( could not find stored procedure 'Sesion' ) Alguem poderia me ajudar a resolver isso, muito obrigado. Edited October 1, 2012 at 03:39 AM by williamjda geSHi
Kline777 Posted September 19, 2012 at 03:40 PM Report #475898 Posted September 19, 2012 at 03:40 PM Porque é que estás a passar esse valor 'Sesion' no cmd = New SqlCommand("Sesion", con) ? isso não deveria ter aí uma query?
williamjda Posted September 19, 2012 at 04:03 PM Author Report #475900 Posted September 19, 2012 at 04:03 PM Amigo poderia me ajudar...Pois estou aprendendo VB e ainda tenho algumas dificuldades com a logica...
Kline777 Posted September 19, 2012 at 04:25 PM Report #475902 Posted September 19, 2012 at 04:25 PM Queres ir buscar alguns dados à BD ou só testar a coneção? Tens de por algo como "Select * from Nome_Tabela" em vez do 'Sesion' para que ele tenha alguma consulta para fazer...
williamjda Posted September 19, 2012 at 04:32 PM Author Report #475905 Posted September 19, 2012 at 04:32 PM Eu quero que ao digitar usuario e senha e clicar no login ele entre no sistema se estiver o usuario e senha correto.
Kline777 Posted September 19, 2012 at 04:36 PM Report #475906 Posted September 19, 2012 at 04:36 PM Experimenta mudares o cmd = New SqlCommand("Sesion", con) para cmd = New SqlCommand("Select 1", con) Só para ele fazer uma consulta qualquer e devolver algo... senao conseguir fazer este SELECT é porque não está a conseguir ligar
williamjda Posted September 19, 2012 at 04:51 PM Author Report #475907 Posted September 19, 2012 at 04:51 PM Esta dando a mesma mensagem ( could not find stored procedure 'Selec1')
Kline777 Posted September 19, 2012 at 04:56 PM Report #475909 Posted September 19, 2012 at 04:56 PM A tua BD está numa servidor ou num ficheiro local?
williamjda Posted September 19, 2012 at 04:59 PM Author Report #475911 Posted September 19, 2012 at 04:59 PM O meu BD esta no meu ficheiro local. Criado no proprio visual studio.
Kline777 Posted September 19, 2012 at 05:07 PM Report #475913 Posted September 19, 2012 at 05:07 PM Tenta sem a linha cmd.CommandType = 4
williamjda Posted September 19, 2012 at 05:22 PM Author Report #475916 Posted September 19, 2012 at 05:22 PM (edited) Olá amigo agora sim funcionou: Porem como faço para que ele valide o usuario e senha. Pois quero que quando digitar o usuario e senha se estiver incorreto ele não acesse o sistema. E se estiver certo ai sim ele acesse. Edited September 19, 2012 at 05:51 PM by williamjda
Kline777 Posted September 20, 2012 at 08:33 AM Report #475963 Posted September 20, 2012 at 08:33 AM Se o login estiver incorrecto ele deve dar uma Exception, só tens de a tratar..
renafi Posted September 20, 2012 at 09:02 AM Report #475965 Posted September 20, 2012 at 09:02 AM A stored procedure dele não deve dar exception, depende de como a construiu. E que tal criar uma função que retorne true ou false, dependendo se o login está válido ou não? Oracle Certified Professional - AdministraçãoOracle Certified Professional - Pl/sqlMCPD - Microsoft Certified Professional DeveloperMCTS - Microsoft Certified Technology Specialist
Solution williamjda Posted October 1, 2012 at 03:42 AM Author Solution Report #477264 Posted October 1, 2012 at 03:42 AM (edited) Amigo obrigado pela ajuda consegui fazer da seguinte maneira. Private Sub BT_entrar_Click(sender As System.Object, e As System.EventArgs) Handles BT_entrar.Click conexao.ConnectionString = "Data Source=localhost;Initial Catalog=BDSOSPET;Integrated Security=True;User ID=sa;Password=senha" Try Dim cmd As New SqlCommand("SELECT * FROM Login WHERE Senha '" & txtSenha.Text & "'AND Senha = '" & txtLogin.Text & "'", conexao) conexao.Open() Dim dr As SqlDataReader = cmd.ExecuteReader() If (dr.Read() = True) Then txtLogin = txtSenha MessageBox.Show("Bem-Vindo " & txtLogin.Text) Me.Hide() SOSPET.ShowDialog() Else MessageBox.Show("Usuario e/ou Senha Invalido!!!") txtLogin.Clear() txtSenha.Clear() txtLogin.Focus() End If conexao.Close() Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub Edited October 1, 2012 at 03:42 AM by williamjda
Kline777 Posted October 1, 2012 at 08:37 AM Report #477280 Posted October 1, 2012 at 08:37 AM Ainda bem 😉 Já agora se calhar a senha da tua BD é que devias por fora do código... senão cada vez que ela mudar tens de ir ao código mudá-la... conexao.ConnectionString = "Data Source=localhost;Initial Catalog=BDSOSPET;Integrated Security=True;User ID=sa;Password=senha" Podias criar uma setting para isso por exemplo...
Kissema Posted October 6, 2012 at 02:41 PM Report #477997 Posted October 6, 2012 at 02:41 PM o tipo de comando deve ser texto .ComandType= ComandType.Text Eu te passo o código que funciona: 'se o usuário ou a senha estiverem vazios avisa o usuário If txtUsuario.Text.Trim = String.Empty Then MsgBox("Preencha o campo com o nome do usuário.", MsgBoxStyle.Information, "Informação Incompleta") Me.txtUsuario.Focus() : Return End If If txtSenha.Text.Trim = String.Empty Then MsgBox("Preencha o campo com a sua senha de entrada.", MsgBoxStyle.Information, "Informação incompleta") Me.txtSenha.Focus() : Return End If strSQL = "SELECT * FROM vUsuario WHERE [user]='" & txtUsuario.Text.Trim & "' " 'define um comando sobe a conexão para selecionar o usuario e a senha 'cria um objeto datareader e uma função que retorna o leitor (Reader) Dim leitor as SQlClient.DataReader = ExecutarBuscarLeitor(strSQL) 'define variaveis de controle Dim entrou As Boolean = False, Flag As Boolean = False Try 'se houver dados retornados If leitor.HasRows Then 'percorre o datareader Dim decifrado As New BLLclsCrypto() While leitor.Read 'se o Hash da senha informada for igual ao hash armazenado no banco de dados define 'a variavel valido como True If txtSenha.Text = leitor.Item("Senha") Then Try : permissoes(leitor.Item("Tipo").ToString) My.Forms.frmMenu.lblUser.Text = leitor("nome").ToString Catch ex As Exception MsgBox("Detalhes de erro ao acessar o sistema:" & vbNewLine & ex.Message, "Mensagem de Erro") End Try entrou = True 'acesso realizado com sucesso If leitor("log").ToString = "0" Then My.Forms.frmAlteraSenha.txtNAgente.Text = leitor("nAgente").ToString My.Forms.frmAlteraSenha.txtNome.Text = leitor("nome").ToString My.Forms.frmAlteraSenha.txtUser.Text = leitor("user").ToString Me.Hide() My.Forms.frmAlteraSenha.ShowDialog() Exit Sub End If End If End While leitor.Close() Flag = True 'define a variavel controle Flag como true End If iConta += 1 'incrementa o contador de tentativas 'se a senha é valida exibe o formulário principal Me.Text = "Login - Tentativa " & iConta.ToString If entrou Then Me.Hide() frmMain.ShowDialog() MsgBox("yyy") Me.Close() ElseIf iConta = 3 Then 'se o numero de tentativas for maior que 3 então avisa ao usuário disparaAlarme() mensagem("Erro", "Você ultrapassou o número de tentativas. Contate o suporte!. Número de tentativas ultrapassado.") Me.Close() ElseIf Flag = False Then 'se Flag for false então o usuário é inválido mensagem("Erro", "Nome de usuário Inválido. Tente novamente! ") Me.txtUsuario.Focus() : Me.txtUsuario.Text = "" : Me.txtSenha.Text = "" Else 'senha inválida mensagem("Erro", "Senha Inválida. Tente novamente!") Me.txtSenha.Focus() : Me.txtSenha.Text = "" End If Catch ex As Exception : mensagem("Ex", ex.Message, "ao fazer o Login...") End Try Aqui está a função que retorna o Reader Public Function ExecutarBuscarLeitor(ByVal StrSQL As String, Optional ByVal Parametro As String = "") As SqlDataReader If Not AbrirConexao() Then Return Nothing Exit Function End If comando = New SqlCommand With comando .Connection = conexao .CommandType = CommandType.Text .CommandText = StrSQL .Parameters.Add(New SqlParameter("@Parametro", SqlDbType.VarChar, 200)) .Parameters("@Parametro").Value = Parametro & "%" End With If Not trans Then ExecutarBuscarLeitor = comando.ExecuteReader Else comando.Transaction = transacao ExecutarBuscarLeitor = comando.ExecuteReader End If End Function mas pode ignorar as transções se vc ñ precisa Pode abrir a conexão de uma outra maneira Function AbrirConexao() As Boolean Try conexao = New SqlConnection(strConexao) If conexao.State = ConnectionState.Closed Then conexao.Open() Return True Else Return False End If Catch acesso As SqlException MsgBox("Detalhes de erro ao acessar a base de dados indicada:", vbNewLine & acesso.Message, "Mensagem de Erro") Return False Catch ex As Exception MsgBox("Mensagem de erro ao abrir a conexão com a base de dados:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Erro ao abrir a conexão") Return False End Try End Function Desculpe a má documentação Espero que ajude @ pr@tic@ f@z o m&str&
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now