Array
(
)

Tela de login - Não funciona

Luiz Junior
   - 04 jan 2012

Estou tentando fazer uma tela de login onde se o usuário for de um determinado tipo ele será redirecionado a uma página, mas quando coloco o login e senha mesmo sendo errado ele redireciona, parece que ele não está fazendo a consulta do banco.
abaixo segue o código:
#Código

<script language=VB runat=server>
        Dim Conecta As OleDbConnection
        Dim Data As OleDbDataReader
        Dim Comando As OleDbCommand
        Dim Tipo As String
        
        Sub Logar(ByVal Source As Object, ByVal e As EventArgs)
            Declaração para encontrar banco de dados em access
            Dim BD As String = Provider=Microsoft.Jet.OLEDB.4.0;Data Source= & Server.MapPath(play.mdb)
            
            Seleciona os dados do usuário.
            Dim qrySQL As String = Select Codigo, Nome, Login, Senha, Tipo  from acesso Where Login =  & edtLogin.Text &  and Senha =  & edtSenha.Text & 
            
            Dim Conecta As New OleDbConnection(BD)
            Dim Comando As New OleDbCommand(qrySQL, Conecta)
            
            Conecta.Open()
            Data = Comando.ExecuteReader(System.Data.CommandBehavior.CloseConnection)
            
            Response.Redirect(admin.aspx)
            
            Tipo = Data.GetValue(5)
            
            If Not Data.Read() Then
                lblMensagem.Text = Login ou Senha Incorretos.
                Data.Close()
                Conecta.Close()
            Else
                If Tipo = 1 Then
                    Response.Redirect(admin.aspx)
                End If
            End If
                        
        End Sub
    </script>    

Onde pode ser o erro?
Fico no aguardo da ajuda de vcs e obrigado!
Desculpa pelo código, mas estou iniciando!

Joel Rodrigues
   - 04 jan 2012

Boa tarde.
Repare no seguinte trecho do seu código:
#Código

Conecta.Open()
Data = Comando.ExecuteReader(System.Data.CommandBehavior.CloseConnection)

Response.Redirect(admin.aspx)


Você está redirecionando antes de verificar os dados. Remova terceira linha.

Luiz Junior
   - 04 jan 2012

Putz, dormi no ponto nessa em? Obrigado pela ajuda!

Agora eu fiz, mas ele da o seguinte erro:

Não existem dados para a linha ou coluna.
Descrição: Ocorreu uma exceção não tratada durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código.

Detalhes da Exceção: System.InvalidOperationException: Não existem dados para a linha ou coluna.

Erro de Origem:

Linha 26: Data = Comando.ExecuteReader(System.Data.CommandBehavior.CloseConnection)
Linha 27:
Linha 28: Tipo = Data.GetValue(6)
Linha 29:
Linha 30: If Not Data.Read() Then

Arquivo de Origem: C:\inetpub\wwwroot\pacesso\index.aspx Linha: 28

Eu tenho essa variável Tipo que um Integer, como faço ela receber o valor de um campo da consulta que fiz para identificar o usuário?

Fiz assim, mas não sei se está certo:
#Código

Dim Tipo As Integer
.
.
.
Dim qrySQL As String = Select Codigo, Nome, Login, Senha, Tipo  from acesso Where Login =  & edtLogin.Text &  and Senha =  & edtSenha.Text & 
.
.
.
 Dim Conecta As New OleDbConnection(BD)
            Dim Comando As New OleDbCommand(qrySQL, Conecta)
            
            Conecta.Open()
            Data = Comando.ExecuteReader(System.Data.CommandBehavior.CloseConnection)
            
            Tipo = Data.GetValue(4)

Joel Rodrigues
   - 05 jan 2012

Certifique-se de que a consulta está retornando registros e, ao invés de GetValue, use GetInt32.
Ah, considere usar parâmetros na sua consulta e não montar a string dessa forma, não analisei bem, mas acho que sua tela de login está sujeita a SQL Injection.

Luiz Junior
   - 05 jan 2012

Legal, vou dar uma olhada a respeito do SQL Injection já vi que é uma falha!!!!

Você usa qual ferramenta para desenvolver site, Micro. Visual Web?

Você conhece algum livro de ASP.Net, mas que mostre programação mais avançada e nada de Alo Mundo?

Wwelenir
   - 06 jan 2012

Bom dia,

Eu recomendo sempre o livro Como programar Asp.net da editora novatec.
e um livro muito bom, não sei se já conhece.
vale a pena ter ele em casa ou na empresa.

Luiz Junior
   - 06 jan 2012

Vou dar uma olhada, valeu pela dica!
E qual ferramenta vc utiliza para desenvolver?

Joel Rodrigues
   - 09 jan 2012

Bom, eu sempre tenho o Visual Studio 2010 (mais recente) COMPLETO instalado. Ou seja, uso ele para todos os tipos de aplicação. Pesquise sobre o Expression Web e veja se lhe serve.

Ricardo Mauro
   - 10 jan 2012

Mano, voce tem que fazer chamar o método .Read() do SqlDataReader, senão ele não le o que esta no resultset.

tem que dar o read antes de resgatar os valores do datareader.

abcs.