• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

RedDevils

Login em VB2008

21 mensagens neste tópico

Imports System.Data
Imports System.Data.OleDb


Public Class frmPesquisa

    Dim ALOCACAOConnection As OleDbConnection
    Dim ALOCACAOCommand As OleDbCommand
    Dim ALOCACAOAdapter As OleDbDataAdapter
    Dim ALOCACAOTable As DataTable
    Dim ALOCACAOManager As CurrencyManager
    
    

    Private Sub frmPesquisa_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Validate()
        Me.ALOCACAOBindingSource.EndEdit()
        'Me.ALOCACAOTable.GetChanges()

    End Sub

    Private Sub ALOCACAO_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'TODO: This line of code loads data into the 'BdoryzoborusDataSet.pessoas' table. You can move, or remove it, as needed.
        Me.ALOCACAOTableAdapter.Fill(Me.DsPesquisa.ALOCACAO)

    End Sub


    Private Sub btnPesquisar2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPesquisar2.Click
        'conecta com o banco de dados
        ALOCACAOConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " + Application.StartupPath + "C:\Documents and Settings\P0nt0_G\Ambiente de trabalho\TrabFC2\TrabFC\TrabFC\TFC.mdb")
        'ALOCACAOConnection.Open()

        Dim pSala As String
        pSala = InputBox("Sala a localizar:", "Localiza Sala por Bloco")

        If pSala <> "" Then

            'cria um objeto command
            ALOCACAOCommand = New OleDbCommand("Select * From Salas Where NUM Like'" & pSala & "*'", ALOCACAOConnection)

            'define um data adapter/data table para pessoas
            ALOCACAOAdapter = New OleDbDataAdapter()
            ALOCACAOAdapter.SelectCommand = ALOCACAOCommand
            ALOCACAOTable = New DataTable()
            ALOCACAOAdapter.Fill(ALOCACAOTable)

            'ALOCACAOTable.DefaultView.Sort = "nome"
            Dim FoundRow As Integer = ALOCACAOTable.DefaultView.Find(pSala)
            If FoundRow <> -1 Then
                ALOCACAOManager.Position = FoundRow
            End If

            'fecha a conexão e libera os objetos
            ALOCACAOConnection.Close()
            ALOCACAOCommand.Dispose()
            ALOCACAOAdapter.Dispose()
            ALOCACAOTable.Dispose()

        End If


    End Sub

    Private Sub btnSair2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSair2.Click
        Me.Close()
    End Sub
End Class

BOas.... tou a tentar fazer um programa para o trabalho final de curso com LOguin  e tenho este código, mas tenho um problema kuando corro o programa e ponho OK ele da um erro k diz não foi possivel encontrar o ficheiro....\DebugTFC.mdf

Podem me ajudar OBRIGADO

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Data Source = " + Application.StartupPath + "C:\Documents and Settings\P0nt0_G\Ambiente detrabalho\TrabFC2\TrabFC\TrabFC\TFC.mdb")

o que é que isto é suposto fazer ?

caminho da aplicação + caminho a partir do C: ??

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

BOas.... tou a tentar fazer um programa para o trabalho final de curso com LOguin  e tenho este código, mas tenho um problema kuando corro o programa e ponho OK ele da um erro k diz não foi possivel encontrar o ficheiro....\DebugTFC.mdf

O vitortomaz já indicou o erro mas além disso DebugTFC.mdf é SQL e não Access ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas.

O OleDb esta optimizado para ms access.

Muda o imports para SQL clients se estas a usar ms sql 2005, que é melhor que ms access..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Asgorath

mas a base de dados foi criada msm NO VB08 tenho k alterar alguma coisa?

ja alterei esta parte do codigo mas continua a dar um erro.

conexao.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + Application.StartupPath + ("C:\Documents and Settings\P0nt0_G\Ambiente detrabalho\TrabFC2\TrabFC\TrabFC\TFC.mdb")

erro:

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

Additional information: Não é um nome de ficheiro válido.

espero k me possam ajudar

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas olha lá estas a Access, certo ?

A ConnectionString deve ser:

conexao.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = C:\Documents and Settings\P0nt0_G\Ambiente detrabalho\TrabFC2\TrabFC\TrabFC\TFC.mdb"

Se a base de dados estiver junto do executáve então deves usar:

conexao.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & Application.StartupPath & "\TFC.mdb"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

jpaulino

Eu fiz a base de dados directamente na VB fica em .mdf, é access?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

entao neste caso ja tenho aqui o meu codigo do login, tenho k alterar os oledb. para sqlcliente certo?

e cmo é k altero isto para sql:

If cboUtl.SelectedIndex = 0 Then

            verificaChaveSenhaComando.Parameters.Add("UTILIZADOR", Data.OleDb.OleDbType.Variant)

            verificaChaveSenhaComando.Parameters.Add("PASSWORD", Data.OleDb.OleDbType.Variant)

Não viste nada do que eu mostrei pois não ? É que se perdesses 1 minuto não voltavas a fazer esta pergunta!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pessoal so pa desculpar pk akele primeiro codigo k pus era o da pesquisa e não o do loguin  :S

Relativamente ao do Loguin o que pretendia era:

um frm com txtUtilizador

                    txtPassword

                  cboUtilizador:  docente

                                          funcionario

e ao por os dados i clicr no OK ele vai verificar na base de dados se o utilizador se encontra na base de dados e entra na pagiina principal

ja tive kuase a xegar la, mas n consigo atinar com a base d dados...

O nome da base d dados é TFC, base de dados ktenho tem uma Table USER com Utilizador, Password, Tipo_Utilizador

  • Imports System.Data.SqlClient
    Public Class frmLogin
        Inherits System.Windows.Forms.Form
        'Define variaveis
        Dim verificaChaveSenhaComando, verificaChaveSenhaComando2 As New SqlClient.SqlCommand()
        Dim conexao As New SqlClient.SqlConnection()
        Dim Read As SqlClient.SqlDataReader
        Dim tentativas As Integer
        Private Sub frmLogin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'String de conexao
            'conexao.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Replace(Application.StartupPath, "bin", "") & "TFC.mdf;Mode=ReadWrite;Persist Security Info=False"
            verificaChaveSenhaComando.Connection = conexao
            verificaChaveSenhaComando.CommandType = CommandType.Text
            verificaChaveSenhaComando.CommandText = "Select * From USER Where UTILIZADOR=? and PASSWORD=?"
            verificaChaveSenhaComando2.Connection = conexao
            verificaChaveSenhaComando2.CommandType = CommandType.Text
            verificaChaveSenhaComando2.CommandText = "Select * From USER Where UTILIZADOR=? and PASSWORD=?"
            txtUtilizador.Focus()
            txtPassword.PasswordChar = "*"
        End Sub
       
        Private Sub btOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btOK.Click
            If txtUtilizador.Text.Trim = "" Then
                MessageBox.Show("Informe a sua Chave !", _
                                "UTILIZADOR", MessageBoxButtons.OK, _
                                MessageBoxIcon.Exclamation)
                txtUtilizador.Focus()
                Exit Sub
            End If
            'se o textbox2 esta em branco...
            If txtPassword.Text.Trim = "" Then
                MessageBox.Show("Informe a sua senha !", _
                                "PASSWORD", MessageBoxButtons.OK, _
                                MessageBoxIcon.Exclamation)
                txtPassword.Focus()
                Exit Sub
            End If
            'se a combobox esta em branco
            If cboUtl.Text.Trim = "" Then
                MessageBox.Show("Selecione o modo de Login : Admin ou Usuário !", _
                            "TIPO_UTILIZADOR", MessageBoxButtons.OK, _
                              MessageBoxIcon.Exclamation)
                cboUtl.Focus()
                Exit Sub
            End If
            'logando como Admin
            If cboUtl.SelectedIndex = 0 Then
                verificaChaveSenhaComando.Parameters.Add("UTILIZADOR", Data.OleDb.OleDbType.Variant)
                verificaChaveSenhaComando.Parameters.Add("PASSWORD", Data.OleDb.OleDbType.Variant)
                verificaChaveSenhaComando.Parameters("UTILIZADOR").Value = txtUtilizador.Text
                verificaChaveSenhaComando.Parameters("PASSWORD").Value = txtPassword.Text
                'Abre conexao com banco de dados
                conexao.Open()
                ' Le a informação do banco de dados
                Read = verificaChaveSenhaComando.ExecuteReader
                verificaLogin()
                ' fecha a conexao com o banco de dados
                conexao.Close()
            End If
            'logando como usuario
            If cboUtl.SelectedIndex = 1 Then
                verificaChaveSenhaComando2.Parameters.Add("UTILIZADOR", Data.OleDb.OleDbType.Variant)
                verificaChaveSenhaComando2.Parameters.Add("PASSWORD", Data.OleDb.OleDbType.Variant)
                verificaChaveSenhaComando2.Parameters("UTILIZADOR").Value = txtUtilizador.Text
                verificaChaveSenhaComando2.Parameters("PASSWORD").Value = txtPassword.Text
                'Abre a conexao com o banco de dados
                conexao.Open()
                ' Le a informação do banco de dados
                Read = verificaChaveSenhaComando2.ExecuteReader
                verificaLogin()
                ' fecha a conexao com o banco de dados
                conexao.Close()
            End If
        End Sub
        Private Sub txtUtilizador_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtUtilizador.KeyPress
            If Char.IsNumber(e.KeyChar) Then
                e.Handled = True
            End If
        End Sub
        Private Sub txtPassword_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtPassword.KeyPress
            'so numero sem backspace
            'If e.KeyChar.IsNumber(e.KeyChar) = False Then
            '    e.Handled = True
            'End If
            'so numeros e backspace
            If Char.IsLetter(e.KeyChar) Then
                e.Handled = True
            End If
        End Sub
        Private Sub txt_KeyDown(ByVal eventSender As System.Object, ByVal eventArgs As  _
                System.Windows.Forms.KeyEventArgs) Handles txtUtilizador.KeyDown
            Dim KeyCode As Short = eventArgs.KeyCode
            If KeyCode = System.Windows.Forms.Keys.Return Then
                txtPassword.Focus()
            End If
            If KeyCode = System.Windows.Forms.Keys.Escape Then
                End
            End If
        End Sub
        Private Sub textbox2_KeyDown(ByVal eventSender As System.Object, ByVal eventArgs As  _
                System.Windows.Forms.KeyEventArgs) Handles txtPassword.KeyDown
            Dim KeyCode As Short = eventArgs.KeyCode
            If KeyCode = System.Windows.Forms.Keys.Return Then
                btLSair.Focus()
            End If
            If KeyCode = System.Windows.Forms.Keys.Escape Then
                End
            End If
        End Sub
        Private Sub verificaLogin()
            With Read
                If .Read Then
                    MessageBox.Show("Acesso permitido ! Bem Vindo """ & txtUtilizador.Text & """", _
                                    "Login", MessageBoxButtons.OK, _
                                    MessageBoxIcon.Information)
                    If cboUtl.SelectedIndex = 0 Then
                        Me.Hide()
                        'Ponha seu formulario aqui
                        frmFormulario = New frmFormulario()
                        frmFormulario.Show()
                    ElseIf cboUtl.SelectedIndex = 1 Then
                        Me.Hide()
                        'Ponha seu formulario aqui
                        frmFormulario = New frmFormulario()
                        frmFormulario.Show()
                    End If
                Else
                    tentativas += 1
                    If tentativas >= 3 Then
                        MessageBox.Show("Número de tentativas foi excedido !", _
                                  "Login", MessageBoxButtons.OK, _
                                  MessageBoxIcon.Exclamation)
                        'Close application
                        End
                    Else
                        txtUtilizador.Clear()
                        txtPassword.Clear()
                        MessageBox.Show("Chave ou senha inválida !", _
                                    "Login", MessageBoxButtons.OK, _
                                    MessageBoxIcon.Error)
                    End If
                End If
                txtUtilizador.Focus()
            End With
        End Sub
        Private Sub btLSair_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btLSair.Click
            Me.Close()
        End Sub
        Private Sub btFormulario_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btFormulario.Click
            Dim frmFormulario As New frmFormulario()
            frmFormulario.Show()
        End Sub
    End Class

         

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

jpaulino 

ja sei k ja me disseste do sqlconnector mas n tou atinar

aki neste codigo tenho mta coisa mas o principal problema msm é ele ir á base de dados ver se a pessoa ta registada e entrar na pagina principal, n tou a conseguir...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Primeiro vai lá ver como esta a ConnectionString porque é diferente. Depois podes ver os parametros utilizam SQLDbType e não OleDbType (e não são variant tens de ver o tipo que utilizas.

Depois onde está o erro ? É mais fácil ir resolvendo ponto a ponto

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

jpaulino pus isto assim n sei se ta bem:

 

  • 'Define variaveis
        Dim verificaChaveSenhaComando, verificaChaveSenhaComando2 As New SqlClient.SqlCommand()
        Dim conexao As New SqlClient.SqlConnection()
        Dim Read As SqlClient.SqlDataReader
        Dim strConn As New SqlConnectionStringBuilder()
        Dim tentativas As Integer
        Private Sub frmLogin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            With strConn
                .DataSource = "SQL"
                .InitialCatalog = "TFC"
                .IntegratedSecurity = False
                .UserInstance = False
                .UserID = "Utilizador"
                .Password = "Password"
            End With
           
            strConn = Nothing
            'String de conexao
            conexao.ConnectionString = "Provider= Microsoft.Jet.OLEDB.4.0;Data Source = C:\Documents and Settings\P0nt0_G\Ambiente detrabalho\TrabFC2\TrabFC\TrabFC\TFC.mdf"
            verificaChaveSenhaComando.Connection = conexao
            verificaChaveSenhaComando.CommandType = CommandType.Text
            verificaChaveSenhaComando.CommandText = "Select * From USER Where UTILIZADOR=? and PASSWORD=?"
            verificaChaveSenhaComando2.Connection = conexao
            verificaChaveSenhaComando2.CommandType = CommandType.Text
            verificaChaveSenhaComando2.CommandText = "Select * From USER Where UTILIZADOR=? and PASSWORD=?"
            txtUtilizador.Focus()
            txtPassword.PasswordChar = "*"
            Debug.Print(strConn.ConnectionString())
            strConn.Clear()
        End Sub
    -------------------------------------
    If cboUtl.SelectedIndex = 0 Then
                verificaChaveSenhaComando.Parameters.Add("UTILIZADOR", Data.SqlDbType.Variant)
                verificaChaveSenhaComando.Parameters.Add("PASSWORD", Data.SqlDbType.Variant)
                verificaChaveSenhaComando.Parameters("UTILIZADOR").Value = txtUtilizador.Text
                verificaChaveSenhaComando.Parameters("PASSWORD").Value = txtPassword.Text
                'Abre conexao com banco de dados
                conexao.Open()
                ' Le a informação do banco de dados
                Read = verificaChaveSenhaComando.ExecuteReader
                verificaLogin()
                ' fecha a conexao com o banco de dados
                conexao.Close()
            End If
            'logando como usuario
            If cboUtl.SelectedIndex = 1 Then
                verificaChaveSenhaComando2.Parameters.Add("UTILIZADOR", Data.SqlDbType.Variant)
                verificaChaveSenhaComando2.Parameters.Add("PASSWORD", Data.SqlDbType.Variant)
                verificaChaveSenhaComando2.Parameters("UTILIZADOR").Value = txtUtilizador.Text
                verificaChaveSenhaComando2.Parameters("PASSWORD").Value = txtPassword.Text
                'Abre a conexao com o banco de dados
                conexao.Open()
                ' Le a informação do banco de dados
                Read = verificaChaveSenhaComando2.ExecuteReader
                verificaLogin()
                ' fecha a conexao com o banco de dados
                conexao.Close()
            End If
        End Sub

kuando ponho a correr aponta para aki--  conexao.ConnectionString = "Provider= Microsoft.Jet.OLEDB.4.0;Data Source = C:\Documents and Settings\P0nt0_G\Ambiente detrabalho\TrabFC2\TrabFC\TrabFC\TFC.mdf"    e diz:

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

Additional information: Keyword not supported: 'provider'.

ja tentei alterar d varias maneiras a variavel conexao, secalhar nem deve de ser preciso essa variavel devido ao strConn, mas n sei... ou entao n deve ser necessário esse ConnectionString visto ja ter criado o SqlConnectionStringBuilder, n tou a xegar lá :s.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

No meu blog de certeza que não viste a connectionstring dessa forma!

Exemplo é só alterares.

Dim myConnectionString As String = "Data Source=.\SQLEXPRESS;AttachDbFilename='C:\myDatabase.mdf';" & _

";Integrated Security=True;User Instance=True"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

penso que ja tenho isto kuase kuase a bombar apenas me aparece um erro d sintaxe aki:

verificaChaveSenhaComando.CommandText = "SELECT * FROM USER WHERE UTILIZADOR=@UTILIZADOR and PASSWORD=@PASSWORD"

n sei pk.... os nomes das tabelas estao iguais ao da base d dados, puderá ser por outra razao?

Thanks

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

alterei par isto

verificaChaveSenhaComando.CommandText = "SELECT * FROM [uSER] WHERE UTILIZADOR=@UTILIZADOR and PASSWORD=@PASSWORD"

e agora diz:

The variable name '@UTILIZADOR' has already been declared.

o k eu tenho é isto:

verificaChaveSenhaComando.Connection = Conexao

        verificaChaveSenhaComando.CommandType = CommandType.Text

        verificaChaveSenhaComando.CommandText = "SELECT * FROM [uSER] WHERE UTILIZADOR=@UTILIZADOR and PASSWORD=@PASSWORD"

        verificaChaveSenhaComando.Parameters.Add("@UTILIZADOR", SqlDbType.NChar)

        verificaChaveSenhaComando.Parameters.Item(0).Value = Me.txtUtilizador.Text

        verificaChaveSenhaComando.Parameters.Add("@PASSWORD", SqlDbType.NChar)

        verificaChaveSenhaComando.Parameters.Item(1).Value = Me.txtPassword.Text

        'verificaChaveSenhaComando.Parameters.Add("@TIPO_UTILIZADOR", SqlDbType.NChar)count(*)

        'verificaChaveSenhaComando.Parameters.Item(2).Value = Me.cboUtl.SelectedValue.ToString

        txtPassword.PasswordChar = "*"

        'se der erro n deita o programa a baixo e diz erro

        Try

            Conexao.Open()

            vl = verificaChaveSenhaComando.ExecuteScalar > 0

            If vl Then

                MsgBox("Bem vindo", MsgBoxStyle.Critical)

            End If

            If vl = False Then

                If txtUtilizador.Text.Trim = "" Then

                    MessageBox.Show("Informe a sua Chave !", _

                                    "UTILIZADOR", MessageBoxButtons.OK, _

                                    MessageBoxIcon.Exclamation)

                    txtUtilizador.Focus()

                    Exit Sub

                End If

                'se o textbox2 esta em branco...

                If txtPassword.Text.Trim = "" Then

                    MessageBox.Show("Informe a sua Password !", _

                                    "PASSWORD", MessageBoxButtons.OK, _

                                    MessageBoxIcon.Exclamation)

                    txtPassword.Focus()

                    Exit Sub

                End If

                'se a combobox esta em branco

                ' If cboUtl.Text.Trim = "" Then

                'MessageBox.Show("Selecione o modo de Login : Admin ou Usuário !", _

                '        "TIPO_UTILIZADOR", MessageBoxButtons.OK, _

                '          MessageBoxIcon.Exclamation)

                'Exit Sub

                'End If

            End If

        Catch ex As Exception

            MsgBox(ex.Message)

        Finally

            Conexao.Close()

        End Try

0

Partilhar esta mensagem


Link 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