Usuário com melhor resposta
Controle de Usuário

Pergunta
-
Bom dia
Preciso mais uma vez da ajuda de vcs.
preciso saber o usuário que esta logado na minha aplicação, comecei a fazer, mas só consigo colocar a informação de um usuário, o problema e que não consigo passar mais de um usuário pra tela de usuário logado.
tela do form onde mostro o usuário.
codigo da tela acima
namespace MenuRelatorios
{
public partial class frmUsuarioLogado : Form
{
DateTime datahora;
public frmUsuarioLogado()
{
InitializeComponent();
}
private void frmUsuarioLogado_Load(object sender, EventArgs e)
{
txtUsuario.Text = "" + frmLogin.usuariologado;
txtDep.Text = "" + frmLogin.deplogado;
datahora = DateTime.Now;
txtDtHr.Text = "Data: "+datahora.ToShortDateString()+" Hora:"+ datahora.ToShortTimeString();
//txtNome2.Text = "" + frmLogin.usuariologado;
//txtDep2.Text = "" + frmLogin.deplogado;
//datahora = DateTime.Now;
//txtDtHr2.Text = "Data: " + datahora.ToShortDateString() + " Hora:" + datahora.ToShortTimeString();
}
public string IDUsuario { get; set; }
}
}
tela de login de onde puxo as informações para mostrar o usuario logado.
codigo da tela de login...
public partial class frmLogin : Form
{
public static string Acesso;
public bool Logado = false;
public static string Departamento;
public int DepartamentoID;
public frmLogin()
{
InitializeComponent();
}
public static string usuariologado;
public static string deplogado;
public int IDUsuario;
public void logar()
{
SqlConnection cn = new SqlConnection(Properties.Settings.Default.USUARIOSConnectionString);
SqlCommand cmd = new SqlCommand("SELECT Nome, Senha, Departamento FROM tbl_Usuarios WHERE Nome = @Nome AND Senha = @Senha AND Departamento = @Departamento", cn);
cmd.Parameters.Add("@Nome", SqlDbType.VarChar).Value = txtNome.Text;
cmd.Parameters.Add("@Senha", SqlDbType.VarChar).Value = txtSenha.Text;
cmd.Parameters.Add("@Departamento", SqlDbType.VarChar).Value = departamentoComboBox.Text;
cn.Open();
SqlDataReader le = null;
le = cmd.ExecuteReader();
if (le.Read())
{
this.Hide();
Acesso = txtNome.Text;
Acesso = txtSenha.Text;
Acesso = departamentoComboBox.Text;
MessageBox.Show("Bem vindo ao sistema");
Logado = true;
DepartamentoID = departamentoComboBox.SelectedIndex;
usuariologado = txtNome.Text;
IDUsuario = int.Parse(iDUsuarioTextBox.Text);
deplogado = departamentoComboBox.Text;
}
else
{
MessageBox.Show("Dados digitados está incorreto, por favor digitar os dados correto!");
Logado = false;
}
}
public string retornaID(string txtNome)
{
// criei uma variável para retornar o nome
string ret = string.Empty;
// fui no dataset e peguei a string de conexão que ele usa
string connectionString1 = this.tbl_UsuariosTableAdapter.Connection.ConnectionString;
// crio uma instância do banco de dados utilizando a string de conexão acima
using (SqlConnection con = new SqlConnection(connectionString1))
{
// mando abrir
con.Open();
// faço a query, concatenando com o txtCodigo ( A1_COD = '" + txtCodigo + "'"; )
string strQuery = @"
SELECT IDUsuario
FROM tbl_Usuarios
WHERE Nome = '" + txtNome + "'";
// rodo o comando, passando a query e a conexão
using (SqlCommand command = new SqlCommand(strQuery, con))
// Lendo o resultado atraves do command.ExecuteReader
using (SqlDataReader reader = command.ExecuteReader())
{
// se tiver dados
while (reader.Read())
{
// mando ler o primeiro campo (e único também = A1_NOME)
reader.GetInt32(0);
// jogo na variavel de retorno, como é um só, eu dou break pra sair do laço (nem precisava)
ret = reader[0].ToString();
break;
}
}
}
// retorno o valor (A1_NOME) desejado
return ret;
}
private void btnEntrar_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(txtSenha.Text))
{
MessageBox.Show("O Campo senha é obrigatório!", "Erro ao logar");
txtSenha.Focus();
return;
}
else
{
logar();
}
}
private void txtSenha_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
logar();
}
}
private void btnCadastro_Click(object sender, EventArgs e)
{
frmCadastroUsuario usu = new frmCadastroUsuario();
usu.ShowDialog();
usu.Dispose();
}
private void btnSair_Click(object sender, EventArgs e)
{
Close();
}
private void tbl_UsuariosBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
this.Validate();
this.tbl_UsuariosBindingSource.EndEdit();
}
private void frmLogin_Load(object sender, EventArgs e)
{
this.tbl_UsuariosTableAdapter.Fill(this.cadastroUsuarioDataSet1.tbl_Usuarios);
this.tbl_nivelacessoTableAdapter.Fill(this.cargosDataSet1.tbl_nivelacesso);
}
private void txtNome_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
// Ele vai lá na função que criei, passando o codCliente e retorna no campo do nome (txtNomeCliente.Text)
iDUsuarioTextBox.Text = retornaID(txtNome.Text);
// Manda o cursor dar foco no txtDataDe
txtNome.Focus();
}
}
}
}
JUNIOR GUERREIRO T.I
Respostas
-
Só para testar deixei da forma abaixo
SqlConnection cnUpdate = new SqlConnection(Properties.Settings.Default.USUARIOSConnectionString1); SqlCommand cmdUpdate = new SqlCommand("Update tbl_Usuarios set UsuarioLogado = '1' where IDUsuario = '" + IDUsuario + "'", cnUpdate); cmdUpdate.ExecuteNonQuery();
Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.
Daniel Ribeiro Arrais
Consultor Sênior
Site: www.danielarrais.com.br
Linkedin: http://www.linkedin.com/in/danielarrais
E-mail: arraishapkido@gmail.com
Skype: dani.arrais
- Marcado como Resposta Junior Guerreiro quinta-feira, 19 de janeiro de 2017 15:55
-
Você pode usar o mesmo código alterando de 1 para 0, se vc tiver um FORM principal no evento FormClosed()
Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.
Daniel Ribeiro Arrais
Consultor Sênior
Site: www.danielarrais.com.br
Linkedin: http://www.linkedin.com/in/danielarrais
E-mail: arraishapkido@gmail.com
Skype: dani.arrais
- Marcado como Resposta Junior Guerreiro quinta-feira, 19 de janeiro de 2017 15:55
-
Pode ser neste botão sim Junior Guerreiro.
O unico detalhe é! Você tem o botão X de Fechar na tela ou somente a opção de sair que fecha o programa?
Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.
Daniel Ribeiro Arrais
Consultor Sênior
Site: www.danielarrais.com.br
Linkedin: http://www.linkedin.com/in/danielarrais
E-mail: arraishapkido@gmail.com
Skype: dani.arrais
- Marcado como Resposta Junior Guerreiro quinta-feira, 19 de janeiro de 2017 15:55
-
Referente o usuário é só você passar o ID do usuário logado para ele...
E referente o fechar coloca o seu código no evento FormClosed() ai tanto faz fechar pelo click do botão ou pelo X
Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.
Daniel Ribeiro Arrais
Consultor Sênior
Site: www.danielarrais.com.br
Linkedin: http://www.linkedin.com/in/danielarrais
E-mail: arraishapkido@gmail.com
Skype: dani.arrais
- Marcado como Resposta Junior Guerreiro quinta-feira, 19 de janeiro de 2017 15:55
Todas as Respostas
-
Olá Junior Guerreiro
Você precisa saber todos os usuário logados no momento?
Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.
Daniel Ribeiro Arrais
Consultor Sênior
Site: www.danielarrais.com.br
Linkedin: http://www.linkedin.com/in/danielarrais
E-mail: arraishapkido@gmail.com
Skype: dani.arrais
-
-
Então você vai precisar ir alimentando uma tabela do banco de dados para isso!
Quando o usuario se logar você deixa um campo boolean para deixar true ou false;
Referente a que FORM ele esta, você vai precisar a cada formulario que ele acessar disparar um evento para dar um update na sua tabela com o nome do FORM.
Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.
Daniel Ribeiro Arrais
Consultor Sênior
Site: www.danielarrais.com.br
Linkedin: http://www.linkedin.com/in/danielarrais
E-mail: arraishapkido@gmail.com
Skype: dani.arrais
-
Não Daniel preciso só mostrar quem esta logado, não preciso saber o que esta sendo feito.
e possivel preenchendo os campos do form de usuario logado.
JUNIOR GUERREIRO T.I
- Editado Junior Guerreiro quarta-feira, 18 de janeiro de 2017 13:07
-
Neste caso então você precisa somente quando o usuário se logar dar um update em alguma tabela informando que ele esta logado, ao fechar o programa faz outro update informando que não esta logado!
Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.
Daniel Ribeiro Arrais
Consultor Sênior
Site: www.danielarrais.com.br
Linkedin: http://www.linkedin.com/in/danielarrais
E-mail: arraishapkido@gmail.com
Skype: dani.arrais
-
Então na minha tabela de usuario vou precisar criar um campo Ex. usuarioLogado, e nesse campo fazer um update quando o usuario logar ficar usuariologado = S ai quando sair da aplicação eu fazer outro update dizendo usuariologado = N. E isso?
JUNIOR GUERREIRO T.I
-
Exatamente!!!
Isso mesmo, desta forma você consegui gerar até mesmo uma lista de todos os usuários logado no momento!
Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.
Daniel Ribeiro Arrais
Consultor Sênior
Site: www.danielarrais.com.br
Linkedin: http://www.linkedin.com/in/danielarrais
E-mail: arraishapkido@gmail.com
Skype: dani.arrais
-
-
Pode ser BIT será true ou false, 1 ou 0.
Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.
Daniel Ribeiro Arrais
Consultor Sênior
Site: www.danielarrais.com.br
Linkedin: http://www.linkedin.com/in/danielarrais
E-mail: arraishapkido@gmail.com
Skype: dani.arrais
-
Daniel vc pode me orientar onde eu crio o update no meu codigo abaixo.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data.Common;
namespace MenuRelatorios
{
public partial class frmLogin : Form
{
public static string Acesso;
public bool Logado = false;
public static string Departamento;
public int DepartamentoID;
public frmLogin()
{
InitializeComponent();
}
public static string usuariologado;
public static string deplogado;
public int IDUsuario;
public void logar()
{
SqlConnection cn = new SqlConnection(Properties.Settings.Default.USUARIOSConnectionString);
SqlCommand cmd = new SqlCommand("SELECT Nome, Senha, Departamento FROM tbl_Usuarios WHERE Nome = @Nome AND Senha = @Senha AND Departamento = @Departamento", cn);
cmd.Parameters.Add("@Nome", SqlDbType.VarChar).Value = txtNome.Text;
cmd.Parameters.Add("@Senha", SqlDbType.VarChar).Value = txtSenha.Text;
cmd.Parameters.Add("@Departamento", SqlDbType.VarChar).Value = departamentoComboBox.Text;
cn.Open();
SqlDataReader le = null;
le = cmd.ExecuteReader();
if (le.Read())
{
this.Hide();
Acesso = txtNome.Text;
Acesso = txtSenha.Text;
Acesso = departamentoComboBox.Text;
MessageBox.Show("Bem vindo ao sistema");
Logado = true;
DepartamentoID = departamentoComboBox.SelectedIndex;
usuariologado = txtNome.Text;
IDUsuario = Int32.Parse(txtID.Text);
deplogado = departamentoComboBox.Text;
}
else
{
MessageBox.Show("Dados digitados está incorreto, por favor digitar os dados correto!");
Logado = false;
}
}
public string retornaID(string txtNome)
{
// criei uma variável para retornar o nome
string ret = string.Empty;
// fui no dataset e peguei a string de conexão que ele usa
string connectionString1 = this.tbl_UsuariosTableAdapter.Connection.ConnectionString;
// crio uma instância do banco de dados utilizando a string de conexão acima
using (SqlConnection con = new SqlConnection(connectionString1))
{
// mando abrir
con.Open();
// faço a query, concatenando com o txtCodigo ( A1_COD = '" + txtCodigo + "'"; )
string strQuery = @"
SELECT IDUsuario
FROM tbl_Usuarios
WHERE Nome = '" + txtNome + "'";
// rodo o comando, passando a query e a conexão
using (SqlCommand command = new SqlCommand(strQuery, con))
// Lendo o resultado atraves do command.ExecuteReader
using (SqlDataReader reader = command.ExecuteReader())
{
// se tiver dados
while (reader.Read())
{
// mando ler o primeiro campo (e único também = A1_NOME)
reader.GetInt32(0);
// jogo na variavel de retorno, como é um só, eu dou break pra sair do laço (nem precisava)
ret = reader[0].ToString();
break;
}
}
}
// retorno o valor (A1_NOME) desejado
return ret;
}
private void btnEntrar_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(txtSenha.Text))
{
MessageBox.Show("O Campo senha é obrigatório!", "Erro ao logar");
txtSenha.Focus();
return;
}
else
{
logar();
}
}
private void txtSenha_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
logar();
}
}
private void btnCadastro_Click(object sender, EventArgs e)
{
frmCadastroUsuario usu = new frmCadastroUsuario();
usu.ShowDialog();
usu.Dispose();
}
private void btnSair_Click(object sender, EventArgs e)
{
Close();
}
private void tbl_UsuariosBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
this.Validate();
this.tbl_UsuariosBindingSource.EndEdit();
}
private void frmLogin_Load(object sender, EventArgs e)
{
this.tbl_UsuariosTableAdapter.Fill(this.cadastroUsuarioDataSet1.tbl_Usuarios);
this.tbl_nivelacessoTableAdapter.Fill(this.cargosDataSet1.tbl_nivelacesso);
}
private void txtNome_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
// Ele vai lá na função que criei, passando o codCliente e retorna no campo do nome (txtNomeCliente.Text)
txtID.Text = retornaID(txtNome.Text);
// Manda o cursor dar foco no txtDataDe
txtNome.Focus();
if (e.Shift)
{
SendKeys.Send("+{TAB}");
}
else
{
SendKeys.Send("{TAB}");
}
}
}
private void departamentoComboBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
if (e.Shift)
{
SendKeys.Send("+{TAB}");
}
else
{
SendKeys.Send("{TAB}");
}
}
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data.Common;
namespace MenuRelatorios
{
public partial class frmLogin : Form
{
public static string Acesso;
public bool Logado = false;
public static string Departamento;
public int DepartamentoID;
public frmLogin()
{
InitializeComponent();
}
public static string usuariologado;
public static string deplogado;
public int IDUsuario;
public void logar()
{
SqlConnection cn = new SqlConnection(Properties.Settings.Default.USUARIOSConnectionString);
SqlCommand cmd = new SqlCommand("SELECT Nome, Senha, Departamento FROM tbl_Usuarios WHERE Nome = @Nome AND Senha = @Senha AND Departamento = @Departamento", cn);
cmd.Parameters.Add("@Nome", SqlDbType.VarChar).Value = txtNome.Text;
cmd.Parameters.Add("@Senha", SqlDbType.VarChar).Value = txtSenha.Text;
cmd.Parameters.Add("@Departamento", SqlDbType.VarChar).Value = departamentoComboBox.Text;
cn.Open();
SqlDataReader le = null;
le = cmd.ExecuteReader();
if (le.Read())
{
this.Hide();
Acesso = txtNome.Text;
Acesso = txtSenha.Text;
Acesso = departamentoComboBox.Text;
MessageBox.Show("Bem vindo ao sistema");
Logado = true;
DepartamentoID = departamentoComboBox.SelectedIndex;
usuariologado = txtNome.Text;
IDUsuario = Int32.Parse(txtID.Text);
deplogado = departamentoComboBox.Text;
}
else
{
MessageBox.Show("Dados digitados está incorreto, por favor digitar os dados correto!");
Logado = false;
}
}
public string retornaID(string txtNome)
{
// criei uma variável para retornar o nome
string ret = string.Empty;
// fui no dataset e peguei a string de conexão que ele usa
string connectionString1 = this.tbl_UsuariosTableAdapter.Connection.ConnectionString;
// crio uma instância do banco de dados utilizando a string de conexão acima
using (SqlConnection con = new SqlConnection(connectionString1))
{
// mando abrir
con.Open();
// faço a query, concatenando com o txtCodigo ( A1_COD = '" + txtCodigo + "'"; )
string strQuery = @"
SELECT IDUsuario
FROM tbl_Usuarios
WHERE Nome = '" + txtNome + "'";
// rodo o comando, passando a query e a conexão
using (SqlCommand command = new SqlCommand(strQuery, con))
// Lendo o resultado atraves do command.ExecuteReader
using (SqlDataReader reader = command.ExecuteReader())
{
// se tiver dados
while (reader.Read())
{
// mando ler o primeiro campo (e único também = A1_NOME)
reader.GetInt32(0);
// jogo na variavel de retorno, como é um só, eu dou break pra sair do laço (nem precisava)
ret = reader[0].ToString();
break;
}
}
}
// retorno o valor (A1_NOME) desejado
return ret;
}
private void btnEntrar_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(txtSenha.Text))
{
MessageBox.Show("O Campo senha é obrigatório!", "Erro ao logar");
txtSenha.Focus();
return;
}
else
{
logar();
}
}
private void txtSenha_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
logar();
}
}
private void btnCadastro_Click(object sender, EventArgs e)
{
frmCadastroUsuario usu = new frmCadastroUsuario();
usu.ShowDialog();
usu.Dispose();
}
private void btnSair_Click(object sender, EventArgs e)
{
Close();
}
private void tbl_UsuariosBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
this.Validate();
this.tbl_UsuariosBindingSource.EndEdit();
}
private void frmLogin_Load(object sender, EventArgs e)
{
this.tbl_UsuariosTableAdapter.Fill(this.cadastroUsuarioDataSet1.tbl_Usuarios);
this.tbl_nivelacessoTableAdapter.Fill(this.cargosDataSet1.tbl_nivelacesso);
}
private void txtNome_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
// Ele vai lá na função que criei, passando o codCliente e retorna no campo do nome (txtNomeCliente.Text)
txtID.Text = retornaID(txtNome.Text);
// Manda o cursor dar foco no txtDataDe
txtNome.Focus();
if (e.Shift)
{
SendKeys.Send("+{TAB}");
}
else
{
SendKeys.Send("{TAB}");
}
}
}
private void departamentoComboBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
if (e.Shift)
{
SendKeys.Send("+{TAB}");
}
else
{
SendKeys.Send("{TAB}");
}
}
}
}
}
JUNIOR GUERREIRO T.I
-
public void logar() { SqlConnection cn = new SqlConnection(Properties.Settings.Default.USUARIOSConnectionString); SqlCommand cmd = new SqlCommand("SELECT Nome, Senha, Departamento FROM tbl_Usuarios WHERE Nome = @Nome AND Senha = @Senha AND Departamento = @Departamento", cn); cmd.Parameters.Add("@Nome", SqlDbType.VarChar).Value = txtNome.Text; cmd.Parameters.Add("@Senha", SqlDbType.VarChar).Value = txtSenha.Text; cmd.Parameters.Add("@Departamento", SqlDbType.VarChar).Value = departamentoComboBox.Text; cn.Open(); SqlDataReader le = null; le = cmd.ExecuteReader(); if (le.Read()) { this.Hide(); Acesso = txtNome.Text; Acesso = txtSenha.Text; Acesso = departamentoComboBox.Text; MessageBox.Show("Bem vindo ao sistema"); Logado = true; DepartamentoID = departamentoComboBox.SelectedIndex; usuariologado = txtNome.Text; IDUsuario = Int32.Parse(txtID.Text); deplogado = departamentoComboBox.Text;
//VOCÊ PODE COLOCAR AQUI SEU CÓDIGO COM O UPDATE
//NESTE MOMENTO TEMOS CERTEZA QUE O USUÁRIO E SENHA ESTA OK
} else { MessageBox.Show("Dados digitados está incorreto, por favor digitar os dados correto!"); Logado = false; } }
Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.
Daniel Ribeiro Arrais
Consultor Sênior
Site: www.danielarrais.com.br
Linkedin: http://www.linkedin.com/in/danielarrais
E-mail: arraishapkido@gmail.com
Skype: dani.arrais
-
Daniel e isso, ou estou fazendo algo errado, porque esta passando mas não esta fazendo o update.
if (le.Read())
{
this.Hide();
Acesso = txtNome.Text;
Acesso = txtSenha.Text;
Acesso = departamentoComboBox.Text;
MessageBox.Show("Bem vindo ao sistema");
Logado = true;
DepartamentoID = departamentoComboBox.SelectedIndex;
usuariologado = txtNome.Text;
IDUsuario = Int32.Parse(txtID.Text);
deplogado = departamentoComboBox.Text;
SqlCommand comand = new SqlCommand();
comand.CommandText = "Update tbl_Usuarios set UsuarioLogado = 'S' where IDUsuario = @IDusuario";JUNIOR GUERREIRO T.I
-
Isso mesmo!
O campo que você criou aceita texto certo 'S'.
Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.
Daniel Ribeiro Arrais
Consultor Sênior
Site: www.danielarrais.com.br
Linkedin: http://www.linkedin.com/in/danielarrais
E-mail: arraishapkido@gmail.com
Skype: dani.arrais
-
Então criei um campo Bit, e mesmo colocando numero não faz o update na tabela...
Será que preciso concatenar algum campo nesse update.
JUNIOR GUERREIRO T.I
- Editado Junior Guerreiro quinta-feira, 19 de janeiro de 2017 12:20
-
Então seria
0 = false
1 = true
Update tbl_Usuarios set UsuarioLogado = 0 where IDUsuario = @IDusuario
Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.
Daniel Ribeiro Arrais
Consultor Sênior
Site: www.danielarrais.com.br
Linkedin: http://www.linkedin.com/in/danielarrais
E-mail: arraishapkido@gmail.com
Skype: dani.arrais
-
-
esta ai a classe completa .
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data.Common;
namespace MenuRelatorios
{
public partial class frmLogin : Form
{
public static string Acesso;
public bool Logado = false;
public static string Departamento;
public int DepartamentoID;
public frmLogin()
{
InitializeComponent();
}
public static string usuariologado;
public static string deplogado;
public int IDUsuario;
public void logar()
{
SqlConnection cn = new SqlConnection(Properties.Settings.Default.USUARIOSConnectionString1);
SqlCommand cmd = new SqlCommand("SELECT Nome, Senha, Departamento FROM tbl_Usuarios WHERE Nome = @Nome AND Senha = @Senha AND Departamento = @Departamento", cn);
cmd.Parameters.Add("@Nome", SqlDbType.VarChar).Value = txtNome.Text;
cmd.Parameters.Add("@Senha", SqlDbType.VarChar).Value = txtSenha.Text;
cmd.Parameters.Add("@Departamento", SqlDbType.VarChar).Value = departamentoComboBox.Text;
cn.Open();
SqlDataReader le = null;
le = cmd.ExecuteReader();
if (le.Read())
{
this.Hide();
Acesso = txtNome.Text;
Acesso = txtSenha.Text;
Acesso = departamentoComboBox.Text;
MessageBox.Show("Bem vindo ao sistema");
Logado = true;
DepartamentoID = departamentoComboBox.SelectedIndex;
usuariologado = txtNome.Text;
IDUsuario = Int32.Parse(txtID.Text);
deplogado = departamentoComboBox.Text;
SqlCommand comand = new SqlCommand();
comand.CommandText = "Update tbl_Usuarios set UsuarioLogado = '1' where IDUsuario = '" + txtNome + "'";
}
else
{
MessageBox.Show("Dados digitados está incorreto, por favor digitar os dados correto!");
Logado = false;
}
}
public string retornaID(string txtNome)
{
// criei uma variável para retornar o nome
string ret = string.Empty;
// fui no dataset e peguei a string de conexão que ele usa
string connectionString1 = this.tbl_UsuariosTableAdapter.Connection.ConnectionString;
// crio uma instância do banco de dados utilizando a string de conexão acima
using (SqlConnection con = new SqlConnection(connectionString1))
{
// mando abrir
con.Open();
// faço a query, concatenando com o txtCodigo ( A1_COD = '" + txtCodigo + "'"; )
string strQuery = @"
SELECT IDUsuario
FROM tbl_Usuarios
WHERE Nome = '" + txtNome + "'";
// rodo o comando, passando a query e a conexão
using (SqlCommand command = new SqlCommand(strQuery, con))
// Lendo o resultado atraves do command.ExecuteReader
using (SqlDataReader reader = command.ExecuteReader())
{
// se tiver dados
while (reader.Read())
{
// mando ler o primeiro campo (e único também = A1_NOME)
reader.GetInt32(0);
// jogo na variavel de retorno, como é um só, eu dou break pra sair do laço (nem precisava)
ret = reader[0].ToString();
break;
}
}
}
// retorno o valor (A1_NOME) desejado
return ret;
}
private void btnEntrar_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(txtSenha.Text))
{
MessageBox.Show("O Campo senha é obrigatório!", "Erro ao logar");
txtSenha.Focus();
return;
}
else
{
logar();
}
}
private void txtSenha_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
logar();
}
}
private void btnCadastro_Click(object sender, EventArgs e)
{
frmCadastroUsuario usu = new frmCadastroUsuario();
usu.ShowDialog();
usu.Dispose();
}
private void btnSair_Click(object sender, EventArgs e)
{
Close();
}
private void tbl_UsuariosBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
this.Validate();
this.tbl_UsuariosBindingSource.EndEdit();
}
private void frmLogin_Load(object sender, EventArgs e)
{
this.tbl_UsuariosTableAdapter.Fill(this.cadastroUsuarioDataSet1.tbl_Usuarios);
this.tbl_nivelacessoTableAdapter.Fill(this.cargosDataSet1.tbl_nivelacesso);
}
private void txtNome_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
// Ele vai lá na função que criei, passando o codCliente e retorna no campo do nome (txtNomeCliente.Text)
txtID.Text = retornaID(txtNome.Text);
// Manda o cursor dar foco no txtDataDe
txtNome.Focus();
if (e.Shift)
{
SendKeys.Send("+{TAB}");
}
else
{
SendKeys.Send("{TAB}");
}
}
}
private void departamentoComboBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
if (e.Shift)
{
SendKeys.Send("+{TAB}");
}
else
{
SendKeys.Send("{TAB}");
}
}
}
}
}JUNIOR GUERREIRO T.I
-
Dentro do métodos logar() altera
SqlCommand comand = new SqlCommand(); comand.CommandText = "Update tbl_Usuarios set UsuarioLogado = '1' where IDUsuario = '" + txtNome + "'";
PARASqlCommand cmdUpdate = new SqlCommand("Update tbl_Usuarios set UsuarioLogado = '1' where IDUsuario = '" + IDUsuario + "'", cn); cmdUpdate.ExecuteNonQuery();
Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.
Daniel Ribeiro Arrais
Consultor Sênior
Site: www.danielarrais.com.br
Linkedin: http://www.linkedin.com/in/danielarrais
E-mail: arraishapkido@gmail.com
Skype: dani.arrais
-
-
Só para testar deixei da forma abaixo
SqlConnection cnUpdate = new SqlConnection(Properties.Settings.Default.USUARIOSConnectionString1); SqlCommand cmdUpdate = new SqlCommand("Update tbl_Usuarios set UsuarioLogado = '1' where IDUsuario = '" + IDUsuario + "'", cnUpdate); cmdUpdate.ExecuteNonQuery();
Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.
Daniel Ribeiro Arrais
Consultor Sênior
Site: www.danielarrais.com.br
Linkedin: http://www.linkedin.com/in/danielarrais
E-mail: arraishapkido@gmail.com
Skype: dani.arrais
- Marcado como Resposta Junior Guerreiro quinta-feira, 19 de janeiro de 2017 15:55
-
Daniel blz funcionou dessa forma.
cn.Close();
cn.Open();
SqlCommand cmdUpdate = new SqlCommand("Update tbl_Usuarios set UsuarioLogado = '1' where IDUsuario = '" + IDUsuario + "'", cn);
cmdUpdate.ExecuteNonQuery();agora onde eu coloco o update e como o faço para quando o usuário sair do sistema ele mostrar 0=false.
JUNIOR GUERREIRO T.I
-
Você pode usar o mesmo código alterando de 1 para 0, se vc tiver um FORM principal no evento FormClosed()
Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.
Daniel Ribeiro Arrais
Consultor Sênior
Site: www.danielarrais.com.br
Linkedin: http://www.linkedin.com/in/danielarrais
E-mail: arraishapkido@gmail.com
Skype: dani.arrais
- Marcado como Resposta Junior Guerreiro quinta-feira, 19 de janeiro de 2017 15:55
-
-
Pode ser neste botão sim Junior Guerreiro.
O unico detalhe é! Você tem o botão X de Fechar na tela ou somente a opção de sair que fecha o programa?
Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.
Daniel Ribeiro Arrais
Consultor Sênior
Site: www.danielarrais.com.br
Linkedin: http://www.linkedin.com/in/danielarrais
E-mail: arraishapkido@gmail.com
Skype: dani.arrais
- Marcado como Resposta Junior Guerreiro quinta-feira, 19 de janeiro de 2017 15:55
-
Então eu tenho o botão X da tela, tem como inativar este botão no form, porque ai eu inativo ele, e o usuario e obrigado a sair pelo botão sair...
tentei fazer no botão sair, so que deu a seguinte mensagem, nesse form principal eu não identifico usuário então não tem como o update saber qual usuario e pra fazer o update na tabela quando sair.
JUNIOR GUERREIRO T.I
-
Referente o usuário é só você passar o ID do usuário logado para ele...
E referente o fechar coloca o seu código no evento FormClosed() ai tanto faz fechar pelo click do botão ou pelo X
Se ajudei Vote como Útil, se resolvi seu problema clique em Marcar como Resposta.
Daniel Ribeiro Arrais
Consultor Sênior
Site: www.danielarrais.com.br
Linkedin: http://www.linkedin.com/in/danielarrais
E-mail: arraishapkido@gmail.com
Skype: dani.arrais
- Marcado como Resposta Junior Guerreiro quinta-feira, 19 de janeiro de 2017 15:55