Banco de Dados (Access 2012)
Prezados,
Bom dia.
Venho das raízes do VB6, e recebi solicitação de fazer um projetinho e convenhamos que VB6 não rola mais. Enfim, tive que "migrar" para o VB10.
Bem, apanhei "um pouco" (bastante), mas consegui fazer a conexão e tudo mais - particularmente acho que a ligação com o BD no VB antigo era MUITO mais simples. Mas OK.
A questão é a seguinte.
Com muito custo, consegui fazer a validação de um LOGIN que ao estar certo, o usuário migra para a tela MDI.Na tela MDI, tenho um status bar, e uma das toolstrip está invisível e nela quero armazenar o ID do login. Além disso, quero puxar o nome do login e o número de permissão para outras toolstrip.
Na verdade, consegui fazer tudo isso, mas acho que estou fazendo um caminho bem "luso" (perdão aos portugueses)... Por favor, deem uma verificada no código:
Banco de dados - Tabela LOGINS
ID_USER
USUARIO
SENHA
NOME
PERMISSAO
STATUS (Boolean)
Imports System.Data.OleDb
Dim Contador As Double
Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
Dim Conexao As New OleDbConnection
Dim Comandos As New OleDbCommand
Dim Comandos_1 As New OleDbCommand
Dim Comandos_2 As New OleDbCommand
Dim Comandos_3 As New OleDbCommand
Dim Consulta As OleDbDataReader
Conexao.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; DATA SOURCE=" & Replace(Application.StartupPath, "\bin\Debug\", "") & "\setup_bd.accdb;"
Conexao.Open()
Comandos.CommandText = "SELECT * FROM LOGINS WHERE USUARIO ='" + TXT_Login.Text + "' AND SENHA ='" + TXT_Senha.Text + "'"
Comandos.Connection = Conexao
Consulta = Comandos.ExecuteReader
Dim Status As Boolean
Comandos_1.CommandText = "SELECT STATUS FROM LOGINS WHERE USUARIO ='" + TXT_Login.Text + "' AND SENHA ='" + TXT_Senha.Text + "'"
Comandos_1.Connection = Conexao
Status = Comandos_1.ExecuteScalar
Dim Nome As String
Comandos_2.CommandText = "SELECT NOME FROM LOGINS WHERE USUARIO ='" + TXT_Login.Text + "' AND SENHA ='" + TXT_Senha.Text + "'"
Comandos_2.Connection = Conexao
Nome = Comandos_2.ExecuteScalar
Dim ID_Login As String
Comandos_3.CommandText = "SELECT ID_USER FROM LOGINS WHERE USUARIO ='" + TXT_Login.Text + "' AND SENHA ='" + TXT_Senha.Text + "'"
Comandos_3.Connection = Conexao
ID_Login = Comandos_3.ExecuteScalar
If Contador = 3 Then
MsgBox("Atenção." & Chr(13) & Chr(13) & "Você digitou 3 vezes o Usuário e/ou Senha errado(s)." & Chr(13) & Chr(13) & "Favor reinicie o sistema.", MsgBoxStyle.Critical, "Erro")
Else
If (Consulta.HasRows) Then
If Status = False Then
MsgBox("Atenção." & Chr(13) & Chr(13) & "O Usuário está INATIVO." & Chr(13) & Chr(13) & "Verifique com o Administrador.", MsgBoxStyle.Critical, "Erro")
Else
Setup_MDI.Show()
Setup_MDI.STATUS_Login.Text = "LOGIN: " & Nome
Setup_MDI.STATUS_ID_Login.Text = ID_Login
Conexao.Close()
Me.Close()
End If
Else
Contador = 1 + Contador
MsgBox("Atenção." & Chr(13) & Chr(13) & "O Usuário ou a Senha digitada está errada." & Chr(13) & Chr(13) & "Tentativa " & Contador & " de 3", MsgBoxStyle.Critical, "Erro")
End If
End If
End Sub
Reparem que para cada campo do banco de dados, criei uma string para isso...
Por exemplo:
para puxar o ID:
Comandos_3.CommandText = "SELECT ID_USER FROM LOGINS WHERE USUARIO ='" + TXT_Login.Text + "' AND SENHA ='" + TXT_Senha.Text + "'"
para puxar o nome:
Comandos_2.CommandText = "SELECT **NOME **FROM LOGINS WHERE USUARIO ='" + TXT_Login.Text + "' AND SENHA ='" + TXT_Senha.Text + "'"
Enfim, não teria um caminho mais simples, puxando todos os campos e escolhendo as informações que eu queira (Select * From)???
Qual seria a syntaxe? Por exemplo, no VB6 era muito simples: LabelNome.text = LOGIN!Nome - visto que LOGIN seria o DataSet ! Nome (campo da tabela).
Bem, alguem conseguiria me ajudar?
Grato,
Gustavo.
Discussão (14)
Carregando comentários...