Ir para o conteúdo
kalex

Registro e Login

Mensagens Recomendadas

kalex

Boas, estou a desenvolver um programa de manutenção de Hotel (reservas, funcionários. Estou a usar uma local database.

O cadastro dos funcionários tem este aspeto: http://i.imgur.com/I2Mrqss.png

Tenho uma form para fazer o login do funcionário, tem apenas duas text box e um botão, criei uma private sub com o seguinte código:

Imports System.Data
Imports System.Data.OleDb
Public Class frmLogin

   Private Sub PLogarSistema()
       Dim dr As OleDbDataReader = Nothing
       Using con As OleDbConnection = GetConnection()
           Try
               con.Open()

               Dim sql As String = "SELECT * FROM ususarios WHERE Username=? and Password=?"
               Dim cmd As OleDbCommand = New OleDbCommand(sql, con)

               cmd.Parameters.Add(New OleDb.OleDbParameter("@Username", txtLogin.Text))
               cmd.Parameters.Add(New OleDb.OleDbParameter("@Password", txtSenha.Text))
               cmd.ExecuteNonQuery()
               Me.Hide()
               perfil.Show()
               Else
                   MsgBox("Erro, tente novamente")
             End If
           Catch ex As Exception
           Finally
               con.Close()

           End Try

       End Using
   End Sub

no botão de login meti PLogarSistema()

criei também um módulo para a conexão à base de dados:


Imports System.Data
Imports System.Data.OleDb
Module mdl
   Public strLogin As String
   Public strPerfil As String
   Public intPergunta As Integer

   Public Function GetConnection() As OleDbConnection
       Dim strconexao As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\funcionarios.sdf"
       Return New OleDbConnection(strconexao)


   End Function
End Module

o meu problema é que crio o funcionário com o respetivo username e password e quando vou fazer o login e clico no botão de login nada acontece, nem sequer dá nenhum erro de ligação à base de dados.

O que posso fazer?

Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
kalex

cmd.ExecuteNonQuery() não se usa para "selects"....

tens aí um "else" e "end if" e não tens "if" nenhum.....

devo usar o ExecuteReader?

tentei de outra forma:

Dim conexao As New OleDbConnection
       Dim comandos As New OleDbCommand
       Dim consulta As OleDbDataReader
       conexao.ConnectionString = "Provider=Microsoft.SqlServerCe.Client.4.0; DATA SOURCE=|DataDirectory|\funcionarios.sdf"
       conexao.Open()
       comandos.CommandText = "SELECT * from dadosfuncionarios where Username'" + txtLogin.Text + "'And Password'" + txtSenha.Text + "'"
       comandos.Connection = conexao
       consulta = comandos.ExecuteReader
       If (consulta.HasRows) Then
           MsgBox("login efetuado")
       Else
           MsgBox("erro")


       End If
       conexao.Close()

   End Sub

mas dá-me este erro:

An unhandled exception of type 'System.InvalidOperationException' occurred in System.Data.dll

Additional information: O provedor 'Microsoft.SqlServerCe.Client.4.0' não está registrado na máquina local.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vikcch

seguido o primeiro teu primeiro exemplo...

tinhas o nome da tabela como ususarios, vê-la isso....

   Private Sub PLogarSistema()

    Using con As OleDbConnection = GetConnection()
	    Try
		    con.Open()

		    Dim sql As String = "SELECT * FROM usuarios WHERE Username=? and Password=?"
		    Dim cmd As OleDbCommand = New OleDbCommand(sql, con)

		    cmd.Parameters.Add(New OleDb.OleDbParameter("@Username", txtLogin.Text))
		    cmd.Parameters.Add(New OleDb.OleDbParameter("@Password", txtSenha.Text))

		    Using dr As OleDbDataReader = cmd.ExecuteReader()

			    If dr.Read() Then
				    While (dr.Read())
					    MessageBox.Show("Usuario encontrado: " & dr("username"), "", MessageBoxButtons.OK, MessageBoxIcon.Information)
				    End While
			    Else
				    MessageBox.Show("Usuario não encontrado", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
			    End If
		    End Using

	    Catch ex As Exception
		    MessageBox.Show(ex.ToString, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
	    End Try
    End Using

   End Sub

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
kalex

seguido o primeiro teu primeiro exemplo...

tinhas o nome da tabela como ususarios, vê-la isso....

Private Sub PLogarSistema()

	Using con As OleDbConnection = GetConnection()
		Try
			con.Open()

			Dim sql As String = "SELECT * FROM usuarios WHERE Username=? and Password=?"
			Dim cmd As OleDbCommand = New OleDbCommand(sql, con)

			cmd.Parameters.Add(New OleDb.OleDbParameter("@Username", txtLogin.Text))
			cmd.Parameters.Add(New OleDb.OleDbParameter("@Password", txtSenha.Text))

			Using dr As OleDbDataReader = cmd.ExecuteReader()

				If dr.Read() Then
					While (dr.Read())
						MessageBox.Show("Usuario encontrado: " & dr("username"), "", MessageBoxButtons.OK, MessageBoxIcon.Information)
					End While
				Else
					MessageBox.Show("Usuario não encontrado", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
				End If
			End Using

		Catch ex As Exception
			MessageBox.Show(ex.ToString, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
		End Try
	End Using

End Sub

obrigado! tentei esse código e dá o seguinte erro:

Additional information: O provedor 'Microsoft.SqlServerCe.Client.4.0' não está registrado na máquina local.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
kalex

Olá, estou a fazer um programa em Visual Basic 2010 para manutenção de hotel (reservas, criar funcionários..). Tenho uma LocalDataBase para os funcionários onde insiro os dados (nome, telefone, email, username e password) e tenho uma form para fazer o login. Para validar o login criei o seguinte código:

Imports System.Data

Imports System.Data.SqlServerCe

Imports System.Data.OleDb

Public Class frmLogin

Private Sub PLogarSistema()

Dim dr As OleDbDataReader = Nothing

Using con As OleDbConnection = GetConnection()

Try

con.Open()

Dim sql As String = "SELECT * FROM ususarios WHERE Username=? and Password=?"

Dim cmd As OleDbCommand = New OleDbCommand(sql, con)

cmd.Parameters.Add(New OleDb.OleDbParameter("@Username", txtLogin.Text))

cmd.Parameters.Add(New OleDb.OleDbParameter("@Password", txtSenha.Text))

cmd.ExecuteNonQuery()

dr = cmd.ExecuteReader

If dr.HasRows Then

dr.Read()

' strLogin = dr.Item("login")

' strPerfil = dr.Item("perfil")

Me.Hide()

perfil.Show()

' frmMdiPrincipal.Show()

Else

MsgBox("Erro, tente novamente")

End If

Catch ex As Exception

Finally

con.Close()

End Try

End Using

End Sub

e tenho um módulo com o seguinte código:

Imports System.Data

Imports System.Data.OleDb

Module mdl

Public strLogin As String

Public strPerfil As String

Public intPergunta As Integer

Public Function GetConnection() As OleDbConnection

Dim strconexao As String = "Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\funcionarios.sdf"

Return New OleDbConnection(strconexao)

End Function

End Module

tentei e não funciona, depois fiz com este código:

Dim conexao As New OleDbConnection

Dim comandos As New OleDbCommand

Dim consulta As OleDbDataReader

conexao.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\funcionarios.sdf"

conexao.Open()

comandos.CommandText = "SELECT * from dadosfuncionarios where Username'" + txtLogin.Text + "'And Password'" + txtSenha.Text + "'"

comandos.Connection = conexao

consulta = comandos.ExecuteReader

If (consulta.HasRows) Then

MsgBox("funciona")

Else

MsgBox("erro")

End If

conexao.Close()

End Sub

e também não funcionou

O que posso fazer?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
kalex

Boas,

que erro te está a dar?

Cumps

boas

está a dar o seguinte erro:

Provedor OLE DB não foi especificado em ConnectionString. Por exemplo, 'Provider=SQLOLEDB;'.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.