ERRO FORM DE LOGIN
Possui o btn_ok q vai abrir um dos forms de usuario ou admin.. e o cmb_Login q possui as opcoes de Amin ou Usuario
Possui um modulo tbm que possui uma variavel:
Public formularioAtual As System.Windows.Forms.Form
O codigo do frm_Login:
Imports MySql.Data.MySqlClient
Public Class frm_Login
Dim verificaChaveSenhaComando, verificaChaveSenhaComando2 As New MySqlCommand
Dim conexao As New MySqlConnection
Dim Read As MySqlDataReader
Dim tentativas As Integer
Private Sub frm_Login_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
cmb_Login.Items.Add([Ô]Admin[Ô])
cmb_Login.Items.Add([Ô]Usuário[Ô])
conexao.ConnectionString = [Ô]server=localhost;user Id=root;password=admin;database=workshopmanager[Ô]
verificaChaveSenhaComando = conexao.CreateCommand
verificaChaveSenhaComando2 = conexao.CreateCommand
verificaChaveSenhaComando.Connection = conexao
verificaChaveSenhaComando.CommandType = CommandType.Text
verificaChaveSenhaComando.CommandText = [Ô]SELECT * FROM admin WHERE login_Admin=@logA and senha_Admin=@senA[Ô]
verificaChaveSenhaComando2.Connection = conexao
verificaChaveSenhaComando2.CommandType = CommandType.Text
verificaChaveSenhaComando2.CommandText = [Ô]SELECT * FROM usuario WHERE login_Usuario=@logU and senha_Usuario=@senU[Ô]
End Sub
Private Sub btn_OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_OK.Click
If txt_Chave.Text.Trim = [Ô][Ô] Then
MessageBox.Show([Ô]Informe a sua Chave ![Ô], [Ô]Chave[Ô], MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
txt_Chave.Focus()
Exit Sub
End If
If txt_Senha.Text.Trim = [Ô][Ô] Then
MessageBox.Show([Ô]Informe a sua senha ![Ô], [Ô]Senha[Ô], MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
txt_Senha.Focus()
Exit Sub
End If
If cmb_Login.Text.Trim = [Ô][Ô] Then
MessageBox.Show([Ô]Selecione o modo de Login : Admin ou Usuário ![Ô], [Ô]Login[Ô], MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
cmb_Login.Focus()
Exit Sub
End If
If cmb_Login.SelectedIndex = 0 Then
verificaChaveSenhaComando.Parameters.Add([Ô]@logA[Ô], MySqlDbType.VarChar)
verificaChaveSenhaComando.Parameters([Ô]@logA[Ô]).Value = txt_Chave.Text
verificaChaveSenhaComando.Parameters.Add([Ô]@senA[Ô], MySqlDbType.VarChar)
verificaChaveSenhaComando.Parameters([Ô]@senA[Ô]).Value = txt_Senha.Text
conexao.Open()
Read = verificaChaveSenhaComando.ExecuteReader
verificaLogin()
conexao.Close()
End If
If cmb_Login.SelectedIndex = 1 Then
verificaChaveSenhaComando2.Parameters.Add([Ô]@logU[Ô], MySqlDbType.VarChar)
verificaChaveSenhaComando2.Parameters([Ô]@logU[Ô]).Value = txt_Chave.Text
verificaChaveSenhaComando2.Parameters.Add([Ô]@senU[Ô], MySqlDbType.VarChar)
verificaChaveSenhaComando2.Parameters([Ô]@senU[Ô]).Value = txt_Senha.Text
conexao.Open()
Read = verificaChaveSenhaComando2.ExecuteReader
verificaLogin()
conexao.Close()
End If
End Sub
Private Sub txt_Chave_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt_Chave.KeyPress
If Char.IsNumber(e.KeyChar) Then
e.Handled = True
End If
End Sub
Private Sub txt_Senha_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt_Senha.KeyPress
If Char.IsLetter(e.KeyChar) Then
e.Handled = True
End If
End Sub
Private Sub verificaLogin()
With Read
If .Read Then
MessageBox.Show([Ô]Acesso permitido ! Bem Vindo [Ô][Ô][Ô] & txt_Chave.Text & [Ô][Ô][Ô][Ô], [Ô]Login[Ô], MessageBoxButtons.OK, MessageBoxIcon.Information)
If cmb_Login.SelectedIndex = 0 Then
Me.Hide()
formularioAtual = New frm_Usuariovb()
formularioAtual.Show()
ElseIf cmb_Login.SelectedIndex = 1 Then
Me.Hide()
formularioAtual = New frm_Admin()
formularioAtual.Show()
End If
Else
tentativas += 1
If tentativas >= 3 Then
MessageBox.Show([Ô]Número de tentativas foi excedido ![Ô], [Ô]Login[Ô], MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End
Else
txt_Chave.Clear()
txt_Senha.Clear()
MessageBox.Show([Ô]Chave ou senha inválida ![Ô], [Ô]Login[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
End If
txt_Chave.Focus()
End With
End Sub
Private Sub btn_cancela_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_cancela.Click
End
End Sub
End Class
Quando clico no botao OK, se os dados tiverem certo, ocorre tudo certo...
mas se o login e a senha tiverem erradas ou só a senha tiver errada, da esse erro:
[Ô]Parameter [ô]@logA[ô] has already been defined.[Ô]
mas deveria aparecer a msgbox informando q os dados estao errados...
Alguem pode me ajudar?
Tabelas banco Mysql:
Create table Admin (
cod_Admin integer unsigned primary key not null auto_increment,
login_Admin varchar(10) not null,
senha_Admin varchar(6) not null) ENGINE=INNODB;
Create table Usuario (
cod_Usuario integer unsigned primary key not null auto_increment,
login_Usuario varchar(10) not null,
senha_Usuario varchar(6) not null) ENGINE=INNODB;
Dim verificaChaveSenhaComando, verificaChaveSenhaComando2 As New MySqlCommand
Com isso, se você executa a primeira vez, vai dar certinho, a segundo vai dar esse erro. Para resolver o problema, faça essa declaração antes do seu bloco de valdação.
se eu coloco essas variaveis em otro lugar ela n vai visivel pra todos os objetos
Citação:If cmb_Login.SelectedIndex = 0 Then
verificaChaveSenhaComando.Parameters.Add([Ô]@logA[Ô], MySqlDbType.VarChar)
verificaChaveSenhaComando.Parameters([Ô]@logA[Ô]).Value = txt_Chave.Text
verificaChaveSenhaComando.Parameters.Add([Ô]@senA[Ô], MySqlDbType.VarChar)
verificaChaveSenhaComando.Parameters([Ô]@senA[Ô]).Value = txt_Senha.Text
conexao.Open()
Read = verificaChaveSenhaComando.ExecuteReader
verificaLogin()
conexao.Close()
End If
If cmb_Login.SelectedIndex = 1 Then
verificaChaveSenhaComando2.Parameters.Add([Ô]@logU[Ô], MySqlDbType.VarChar)
verificaChaveSenhaComando2.Parameters([Ô]@logU[Ô]).Value = txt_Chave.Text
verificaChaveSenhaComando2.Parameters.Add([Ô]@senU[Ô], MySqlDbType.VarChar)
verificaChaveSenhaComando2.Parameters([Ô]@senU[Ô]).Value = txt_Senha.Text
conexao.Open()
Read = verificaChaveSenhaComando2.ExecuteReader
verificaLogin()
conexao.Close()
End If
Citação:se eu coloco essas variaveis em otro lugar ela n vai visivel pra todos os objetos
é exatamente esta a idéia. é uma péssima idéia usar esse tipo de objeto reaproveitando para tudo...
Imports MySql.Data.MySqlClient
Public Class frm_Login
Dim cmd, cmd2 As New MySqlCommand
Dim con As New MySqlConnection
Dim Read As MySqlDataReader
Dim tentativas As Integer
Private Sub btn_cancela_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_cancela.Click
End
End Sub
Private Sub frm_Login_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
cmb_Tipo.Items.Add([Ô]Administrador[Ô])
cmb_Tipo.Items.Add([Ô]Usuário[Ô])
con.ConnectionString = [Ô]server=localhost;user Id=root;password=admin;database=workshopmanager[Ô]
End Sub
Private Sub btn_OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_OK.Click
cmd = con.CreateCommand
cmd2 = con.CreateCommand
cmd.Connection = con
cmd.CommandType = CommandType.Text
cmd.CommandText = [Ô]SELECT * FROM admin WHERE login_Admin=@logA and senha_Admin=@senA[Ô]
cmd2.Connection = con
cmd2.CommandType = CommandType.Text
cmd2.CommandText = [Ô]SELECT * FROM usuario WHERE login_Usuario=@logU and senha_Usuario=@senU[Ô]
If txt_Login.Text.Trim = [Ô][Ô] Then
MessageBox.Show([Ô]Informe o seu Login ![Ô], [Ô]Chave[Ô], MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
txt_Login.Focus()
Exit Sub
End If
If txt_Senha.Text.Trim = [Ô][Ô] Then
MessageBox.Show([Ô]Informe a sua senha ![Ô], [Ô]Senha[Ô], MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
txt_Senha.Focus()
Exit Sub
End If
If cmb_Tipo.Text.Trim = [Ô][Ô] Then
MessageBox.Show([Ô]Selecione o tipo de Login : Administrador ou Usuário ![Ô], [Ô]Login[Ô], MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
cmb_Tipo.Focus()
Exit Sub
End If
If cmb_Tipo.SelectedIndex = 0 Then
cmd.Parameters.Add([Ô]@logA[Ô], MySqlDbType.VarChar)
cmd.Parameters([Ô]@logA[Ô]).Value = txt_Login.Text
cmd.Parameters.Add([Ô]@senA[Ô], MySqlDbType.VarChar)
cmd.Parameters([Ô]@senA[Ô]).Value = txt_Senha.Text
con.Open()
Read = cmd.ExecuteReader
verificaLogin()
con.Close()
End If
If cmb_Tipo.SelectedIndex = 1 Then
cmd2.Parameters.Add([Ô]@logU[Ô], MySqlDbType.VarChar)
cmd2.Parameters([Ô]@logU[Ô]).Value = txt_Login.Text
cmd2.Parameters.Add([Ô]@senU[Ô], MySqlDbType.VarChar)
cmd2.Parameters([Ô]@senU[Ô]).Value = txt_Senha.Text
con.Open()
Read = cmd2.ExecuteReader
verificaLogin()
con.Close()
End If
End Sub
Private Sub txt_Login_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt_Login.KeyPress
If Char.IsNumber(e.KeyChar) Then
e.Handled = True
End If
End Sub
Private Sub txt_Senha_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt_Senha.KeyPress
If Char.IsLetter(e.KeyChar) Then
e.Handled = True
End If
End Sub
Private Sub verificaLogin()
With Read
If .Read Then
MessageBox.Show([Ô]Acesso permitido ! Bem Vindo [Ô][Ô][Ô] & txt_Login.Text & [Ô][Ô][Ô][Ô], [Ô]Login[Ô], MessageBoxButtons.OK, MessageBoxIcon.Information)
If cmb_Tipo.SelectedIndex = 0 Then
Me.Hide()
formularioAtual = New frm_Admin()
formularioAtual.Show()
ElseIf cmb_Tipo.SelectedIndex = 1 Then
Me.Hide()
formularioAtual = New frm_Usuario()
formularioAtual.Show()
End If
Else
tentativas += 1
If tentativas >= 4 Then
MessageBox.Show([Ô]Número de tentativas foi excedido. Programa fechado![Ô], [Ô]Login[Ô], MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End
Else
txt_Login.Clear()
txt_Senha.Clear()
MessageBox.Show([Ô]Login ou senha inválida![Ô], [Ô]Login[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
End If
End If
txt_Login.Focus()
End With
End Sub
End Class