none
AJUDA! TELA DE CADASTRO E TELA DE LOGIN [VB.NET] RRS feed

  • Pergunta

  • Olá gente, eu fiz um formulário de cadastro e login na plataforma VB.NET e assim que o cadastro é concluído abre o formulário de login, mas não consigo logar com o usuário que cadastrei, fica como se não estivesse cadastrado, ou seja, acho que não atualiza os dados pro login, como faço isso??

    ME AJUDEEM POR FAVOR ...
    segunda-feira, 26 de novembro de 2012 19:44

Todas as Respostas

  • Espere um pouco que eu já acesso seu computador para ver o que vc fez.... :)

    Laura.. fica um pouco dificil te ajudar sem saber o que vc esta fazendo.

    Ajude-nos à te ajudar.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée


    segunda-feira, 26 de novembro de 2012 19:53
    Moderador
  • A programação da tela de LOGIN é essa

    Private Sub Login2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            con.ConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source= TTI.accdb"

            da.SelectCommand = New OleDbCommand("Select * from Tb_Usuario")
            da.SelectCommand.Connection = con
            da.Fill(ds)
            da.UpdateCommand = New OleDbCommand("Update Tb_Usuario SET Nome = @Nome, Usuario = @Usuario, Senha = @Senha, Data = @Data, Sexo = @Sexo, Profissao = @Profissao, Endereco = @Endereco")
            da.UpdateCommand.Connection = con
            da.UpdateCommand.Parameters.Add("@Nome", OleDbType.VarChar, 50, "Nome")
            da.UpdateCommand.Parameters.Add("@Usuario", OleDbType.VarChar, 50, "Usuario")
            da.UpdateCommand.Parameters.Add("@Senha", OleDbType.VarChar, 50, "Senha")
            da.UpdateCommand.Parameters.Add("@Data", OleDbType.VarChar, 50, "Data")
            da.UpdateCommand.Parameters.Add("@Sexo", OleDbType.VarChar, 50, "Sexo")
            da.UpdateCommand.Parameters.Add("@Profissao", OleDbType.VarChar, 50, "Profissao")
            da.UpdateCommand.Parameters.Add("@Endereco", OleDbType.VarChar, 50, "Endereco")
        End Sub
    _____________________________________________________________________________
        Private Sub Entrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Entrar.Click
            cmd = con.CreateCommand

            cmd.Connection = con
            cmd.CommandType = CommandType.Text
            cmd.CommandText = "SELECT * FROM Tb_Usuario WHERE Usuario=@Usuario and Senha=@senha"


            If TxtNome.Text.Trim = "" Then
                MessageBox.Show("Informe o seu nome de usuário !", "Chave", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                TxtNome.Focus()
                Exit Sub
            End If

            If TxtSenha.Text.Trim = "" Then
                MessageBox.Show("Informe a sua senha !", "Senha", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                TxtSenha.Focus()
                Exit Sub
            End If


            cmd.Parameters.Add("@Usuario", OleDbType.VarChar)
            cmd.Parameters("@Usuario").Value = TxtNome.Text
            cmd.Parameters.Add("@Senha", OleDbType.VarChar)
            cmd.Parameters("@Senha").Value = TxtSenha.Text

            con.Open()
            Read = cmd.ExecuteReader
            verificaLogin()
            con.Close()
        End Sub

    ______________________________________________________________________________

        Private Sub verificaLogin()

            With Read
                If .Read Then
                    MessageBox.Show("Acesso permitido ! Bem Vindo """ & TxtNome.Text & """", "Login", MessageBoxButtons.OK, MessageBoxIcon.Information)
                    Me.Hide()
                    Principal.Show()
                Else
                tentativas += 1
                    If tentativas >= 1000 Then
                        MessageBox.Show("Número de tentativas foi excedido. Programa fechado!", "Login", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                        End
                    Else
                        TxtNome.Clear()
                        TxtSenha.Clear()
                        MessageBox.Show("Usuário ou senha inválida!", "Login", MessageBoxButtons.OK, MessageBoxIcon.Error)
                    End If
                End If
                TxtNome.Focus()
            End With
        End Sub

    ______________________________________________________________________________

    A programação da tela de CADASTRO é essa

        Private Sub Cadastro_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            da.UpdateCommand = New OleDbCommand("Update Tb_Usuario SET Nome = @nome, Senha = @senha, Data = @data, Sexo = @sexo, Profissao = @profissao, Endereco = @endereco WHERE Usuario = @usuario")
            da.UpdateCommand.Connection = banco
            da.UpdateCommand.Parameters.Add("@nome", OleDbType.VarChar, 50, "Nome")
            da.UpdateCommand.Parameters.Add("@usuario", OleDbType.VarChar, 50, "Usuario")
            da.UpdateCommand.Parameters.Add("@senha", OleDbType.VarChar, 50, "Senha")
            da.UpdateCommand.Parameters.Add("@data", OleDbType.VarChar, 50, "Data")
            da.UpdateCommand.Parameters.Add("@sexo", OleDbType.VarChar, 50, "Sexo")
            da.UpdateCommand.Parameters.Add("@profissao", OleDbType.VarChar, 50, "Profissao")
            da.UpdateCommand.Parameters.Add("@endereco", OleDbType.VarChar, 50, "Endereco")
        End Sub
    ______________________________________________________________________________
        Private Sub BtnMarcar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnMarcar.Click
            Dim queryInsert As String
            banco = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\TTI\TTI\TTI.accdb")

            Dim sConnection As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\TTI\TTI\TTI.accdb"

            banco.Open()

            'efetua a gravação do compromisso

            queryInsert = "INSERT INTO Tb_Usuario([Nome], [Usuario], [Senha], [Data], [Sexo], [Profissao], [Endereco]) values (@Nome, @Usuario, @Senha, @Data, @Sexo, @Profissao, @Endereco)"
            Dim dr As DataRow
            Dim sexo As String
            Dim commandInsert As New OleDbCommand(queryInsert, banco)
            If Not validaCampo() Then
                Exit Sub
            Else
                If RdbFeminino.Checked Then
                    sexo = "Feminino"
                Else
                    sexo = "Masculino"
                End If

               
                commandInsert.Parameters.Add("@Nome", OleDbType.VarChar, 50, "Nome").Value = TxtNome.Text
                commandInsert.Parameters.Add("@Usuario", OleDbType.VarChar, 50, "Usuario").Value = TxtUsuario.Text
                commandInsert.Parameters.Add("@Senha", OleDbType.VarChar, 50, "Senha").Value = TxtSenha.Text
                commandInsert.Parameters.Add("@Data", OleDbType.VarChar, 50, "Data").Value = TxtDataAniver.Text
                commandInsert.Parameters.Add("@Sexo", OleDbType.VarChar, 50, "Sexo").Value = sexo
                commandInsert.Parameters.Add("@Profissao", OleDbType.VarChar, 50, "Profissao").Value = TxtProfissao.Text
                commandInsert.Parameters.Add("@Endereco", OleDbType.VarChar, 50, "Endereco").Value = TxtEndereco.Text
                commandInsert.ExecuteNonQuery()

                MsgBox("Cadastro efetuado com sucesso!")
                banco.Close()
                Login2.Show()
                Me.Hide()

            End If
        End Sub

    ______________________________________________________________________________
    Preciso fazer com que o usuário se cadastre e logo em seguida abre a página do login e ele loga, mas ele dá como usuário não cadastrado.

    Espero que dê pra entender.

    segunda-feira, 26 de novembro de 2012 20:10
  • E vc ja verificou o banco para ver se o dado esta realmte lá?

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    segunda-feira, 26 de novembro de 2012 20:23
    Moderador
  • Acabei de verificar e realmente ele esta sim.



    • Editado LauraBrochin segunda-feira, 26 de novembro de 2012 20:39
    segunda-feira, 26 de novembro de 2012 20:33
  • Tente usar um DataTable ao invez de um Read, simplesmente fazendo:

    con.Open() Read = cmd.ExecuteReader DataTable myTable = new DataTable(); myTable.Load(Read); MsgBox(myTable.Rows.Count)//verifica quantas linhas foram trazidas na consulta

      verificaLogin(myTable)


    depois altere seu verifica login, assim:

      Private Sub verificaLogin(dt as DataTable)
    
         
                If dt.Rows.Count>0 Then
                    MessageBox.Show("Acesso permitido ! Bem Vindo """ & TxtNome.Text & """", "Login", MessageBoxButtons.OK, MessageBoxIcon.Information)
                    Me.Hide()
                    Principal.Show()
                Else
                tentativas += 1
                    If tentativas >= 1000 Then
                        MessageBox.Show("Número de tentativas foi excedido. Programa fechado!", "Login", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                        End
                    Else
                        TxtNome.Clear()
                        TxtSenha.Clear()
                        MessageBox.Show("Usuário ou senha inválida!", "Login", MessageBoxButtons.OK, MessageBoxIcon.Error)
                    End If
                End If
                TxtNome.Focus()
        End Sub

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée


    segunda-feira, 26 de novembro de 2012 20:50
    Moderador
  • Fiz mas continua o mesmo problema, não pega os dados que acabei de cadastrar.

    Há alguma outra maneira?
    segunda-feira, 26 de novembro de 2012 21:11
  • O que retornou aqui:

    MsgBox(myTable.Rows.Count)//verifica quantas linhas foram trazidas na consulta

    Zero?


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    segunda-feira, 26 de novembro de 2012 21:13
    Moderador
  • Nao creio que seja isso, mas tente. 

    Veja seu commandtext esta assim:

        cmd.CommandText = "SELECT * FROM Tb_Usuario WHERE Usuario=@Usuario and Senha=@senha"

    e seu parametro esta assim:

           cmd.Parameters.Add("@Senha", OleDbType.VarChar)
            cmd.Parameters("@Senha").Value = TxtSenha.Text

    Note que em um lugar vc usa @senha e no outro @Senha.. (um com s minisculo e outro com S maiusculo)

    Tente colocar os dois iguais, ou seja:

        cmd.CommandText = "SELECT * FROM Tb_Usuario WHERE Usuario=@Usuario and Senha=@Senha"

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée


    segunda-feira, 26 de novembro de 2012 21:17
    Moderador
  • Realmente não é isto, devo ter algum comando de update no login? Pois o problema realmente é de atualizar para o login, pois gravar ele grava, só não para o formulário de login ...
    segunda-feira, 26 de novembro de 2012 21:27
  • Ok.. me responda isso primeiro:

    que retornou aqui:

    MsgBox(myTable.Rows.Count)//verifica quantas linhas foram trazidas na consulta

    Zero?

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    Sogi informatique ltée

    segunda-feira, 26 de novembro de 2012 21:29
    Moderador