Como fazer else if
Pessoal consegui chegar até aqui com este código, mas não sei como concluir, alguém sabe ?
private void BtnSalvar_Click(object sender, EventArgs e)
{
try
{
OleDbConnection conexao = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + "\\BDBiblioteca.mdb");
OleDbCommand comando = new OleDbCommand("SELECT Nome, Login FROM Funcionario WHERE Nome = @nome OR Login = @login", conexao);
comando.Parameters.AddWithValue("@nome", nomeTextBox.Text);
comando.Parameters.AddWithValue("@login", loginTextBox.Text);
conexao.Open();
OleDbDataReader reader = null;
reader = comando.ExecuteReader(CommandBehavior.CloseConnection);
if ((reader.HasRows) && (reader.Read())
{
else if (nomeTextBox.Text = )
{
MessageBox.Show("Nome já Cadastrado !", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning);
nomeTextBox.Focus();
nomeTextBox.ForeColor = Color.Red;
}
else if (loginTextBox.Text = )
{
MessageBox.Show("Login já Cadastrado !", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning);
loginTextBox.Focus();
loginTextBox.ForeColor = Color.Red;
}
else if (senhaTextBox.Text != ConfSenhatextbox.Text)
{
MessageBox.Show("Senhas não são Iguais !", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning);
ConfSenhatextbox.Focus();
ConfSenhatextbox.ForeColor = Color.Red;
}
else
{
this.Validate();
this.funcionarioBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.bDBibliotecaDataSet);
MessageBox.Show("Registro Salvo com Sucesso !", "Salvar", MessageBoxButtons.OK, MessageBoxIcon.Information);
Jair Souza
Curtidas 0
Respostas
Kelvin Ott
05/06/2014
O que exatamente você quer fazer, houve algum erro?
GOSTEI 0
Jair Souza
05/06/2014
Está funcionando e avisa nome OU login já cadastrado, mas eu quero especificar exatamente quando é o "Nome" que já está cadastrado e quando é o "Login"...
GOSTEI 0
Jair Souza
05/06/2014
...veja como iniciei os "else if " dentro dos parenteses (nomeTextBox.Text = ), deve ser igual a que, considerando o read acima... ?
GOSTEI 0
Kelvin Ott
05/06/2014
Tenta isso, se funcionar da um retorno.
private void BtnSalvar_Click(object sender, EventArgs e)
{
try
{
OleDbConnection conexao = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + "\BDBiblioteca.mdb");
OleDbCommand comando = new OleDbCommand("SELECT Nome, Login FROM Funcionario WHERE Nome = @nome OR Login = @login", conexao);
comando.Parameters.AddWithValue("@nome", nomeTextBox.Text);
comando.Parameters.AddWithValue("@login", loginTextBox.Text);
conexao.Open();
OleDbDataReader reader = null;
reader = comando.ExecuteReader(CommandBehavior.CloseConnection);
if ((reader.HasRows) && (reader.Read())
{
if(nomeTextBox.Text == reader["nome"].ToString())
{
MessageBox.Show("Nome já Cadastrado !", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning);
nomeTextBox.Focus();
nomeTextBox.ForeColor = Color.Red;
}
else if(loginTextBox.Text == reader["login"].ToString())
{
MessageBox.Show("Login já Cadastrado !", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning);
loginTextBox.Focus();
loginTextBox.ForeColor = Color.Red;
}
}
else if(senhaTextBox.Text != ConfSenhatextbox.Text)
{
MessageBox.Show("Senhas não são Iguais !", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning);
ConfSenhatextbox.Focus();
ConfSenhatextbox.ForeColor = Color.Red;
}
else
{
this.Validate();
this.funcionarioBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.bDBibliotecaDataSet);
MessageBox.Show("Registro Salvo com Sucesso !", "Salvar", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
GOSTEI 0
Jair Souza
05/06/2014
Infelizmente já havia tentado assim.
GOSTEI 0
Kelvin Ott
05/06/2014
Qual é o erro que da??
GOSTEI 0
Jair Souza
05/06/2014
Row no exists...
GOSTEI 0
Kelvin Ott
05/06/2014
Qual é o tipo da sua reader?
GOSTEI 0
Jair Souza
05/06/2014
Desculpe..., como assim ?
GOSTEI 0
Kelvin Ott
05/06/2014
reader = comando.ExecuteReader(CommandBehavior.CloseConnection);
Como que tu declarou esse reader?
GOSTEI 0
Kelvin Ott
05/06/2014
Foi mal, passou despercebido e que to na correria, já dou uma olhada pra você hehehe.
GOSTEI 0
Kelvin Ott
05/06/2014
Tenta mudar isso ve se vai...
OleDbCommand comando = new OleDbCommand("SELECT Nome as nome, Login as login FROM Funcionario WHERE Nome = @nome OR Login = @login", conexao);GOSTEI 0
Jair Souza
05/06/2014
Está assim, e não funcionou...vai direto pro else e salva tudo sempre... :
private void BtnSalvar_Click(object sender, EventArgs e)
{
try
{
OleDbConnection conexao = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + "\\BDBiblioteca.mdb");
OleDbCommand comando = new OleDbCommand("SELECT Nome as nome, Login as login FROM Funcionario WHERE Nome = @nome OR Login = @login", conexao);
comando.Parameters.AddWithValue("@nome", nomeTextBox.Text);
comando.Parameters.AddWithValue("@login", loginTextBox.Text);
conexao.Open();
OleDbDataReader reader = null;
reader = comando.ExecuteReader(CommandBehavior.CloseConnection);
if ((reader.HasRows) && (reader.Read()) && (BtnAdicionar.Checked == true)) //se leitor tem linhas e se leitor leu.
{
if (nomeTextBox.Text == reader["Nome"].ToString())
{
MessageBox.Show("Nome já Cadastrado !", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning);
nomeTextBox.Focus();
nomeTextBox.ForeColor = Color.Red;
}
else if (loginTextBox.Text == reader["Login"].ToString())
{
MessageBox.Show("Login já Cadastrado !", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning);
loginTextBox.Focus();
loginTextBox.ForeColor = Color.Red;
}
else if (senhaTextBox.Text != ConfSenhatextbox.Text)
{
MessageBox.Show("Senhas não são Iguais !", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning);
ConfSenhatextbox.Focus();
ConfSenhatextbox.ForeColor = Color.Red;
}
else
{
this.Validate();
this.funcionarioBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.bDBibliotecaDataSet);
MessageBox.Show("Registro Salvo com Sucesso !", "Salvar", MessageBoxButtons.OK, MessageBoxIcon.Information);GOSTEI 0
Kelvin Ott
05/06/2014
Debuga teu código e diz em qual cláusula do teu if que faz ele não entrar.
Se tua query não está retornando nada, quer dizer que não existe ninguém cadastrado com esse nome.
Se tua query não está retornando nada, quer dizer que não existe ninguém cadastrado com esse nome.
GOSTEI 0
Jair Souza
05/06/2014
Deixando como abaixo, funciona e não deixa salvar...mas como quero especificar qual campo já existe....
[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20140606-075434.png[/img]
[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20140606-075434.png[/img]
GOSTEI 0
Kelvin Ott
05/06/2014
É essa parte do código que valida se é o nome ou o login que já existe, porém eu não sei se é essa forma certa de buscar o valor da linha retornada do seu dataReader.
if (nomeTextBox.Text == reader["Nome"].ToString())
{
MessageBox.Show("Nome já Cadastrado !", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning);
nomeTextBox.Focus();
nomeTextBox.ForeColor = Color.Red;
}
else if (loginTextBox.Text == reader["Login"].ToString())
{
MessageBox.Show("Login já Cadastrado !", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning);
loginTextBox.Focus();
loginTextBox.ForeColor = Color.Red;
}GOSTEI 0
Jair Souza
05/06/2014
Pois como tinha lhe dito, esta forma eu já havia tentado antes de tu indicares, mas não tinha funcionado, eu tentei novamente com o acréscimo do "select Nome AS nome..." que tu indicou, mas como disseste não deve ser esta forma correta, por que o restante funciona.
GOSTEI 0
Kelvin Ott
05/06/2014
Consegue por um break point no if e me dizer o que retorna essa parte?
reader["nome"].ToString()
GOSTEI 0
Jair Souza
05/06/2014
Sim, mas como não estou na minha máquina hoje, vou poder somente amanhã a noite, então posto aqui.
Obrigado, pelo seu interesse em ajudar, valeu!
Obrigado, pelo seu interesse em ajudar, valeu!
GOSTEI 0
Kelvin Ott
05/06/2014
De nada cara, trabalho apenas 2 anos na área, vim a procura de foruns para que eu possa ajudar e aprender ao mesmo tempo, no final tudo pelo conhecimento. Até amanhã a noite.
GOSTEI 0
Jair Souza
05/06/2014
Bom dia, coloquei o break point e pude ver que estava lendo, mas não entrava no if corretto... entendi que o problema era a abertura e fechamento de blocos " { "...depois de muitas e muitas alterações nos blocos acertei.
Funcionando assim :
Valeu muito a sua ajuda.
Funcionando assim :
private void BtnSalvar_Click(object sender, EventArgs e)
{
try
{
OleDbConnection conexao = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + "\\BDBiblioteca.mdb");
OleDbCommand comando = new OleDbCommand("SELECT Nome , Login FROM Funcionario WHERE Nome = @nome OR Login = @login", conexao);
comando.Parameters.AddWithValue("@nome", nomeTextBox.Text);
comando.Parameters.AddWithValue("@login", loginTextBox.Text);
conexao.Open();
OleDbDataReader reader = null;
reader = comando.ExecuteReader(CommandBehavior.CloseConnection);
if ((reader.HasRows) && (reader.Read()) && (BtnAdicionar.Checked == true))
{
if (nomeTextBox.Text == reader["nome"].ToString())
{
MessageBox.Show("Nome já Cadastrado !", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning);
nomeTextBox.Focus();
nomeTextBox.ForeColor = Color.Red;
loginTextBox.ForeColor = Color.Black;
}
else if (loginTextBox.Text == reader["login"].ToString())
{
MessageBox.Show("Login já Cadastrado !", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning);
loginTextBox.Focus();
loginTextBox.ForeColor = Color.Red;
nomeTextBox.ForeColor = Color.Black;
}
}
else if (senhaTextBox.Text != ConfSenhatextbox.Text)
{
MessageBox.Show("Senhas não são Iguais !", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning);
ConfSenhatextbox.Focus();
ConfSenhatextbox.ForeColor = Color.Red;
}
else
{
this.Validate();
this.funcionarioBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.bDBibliotecaDataSet);
MessageBox.Show("Registro Salvo com Sucesso !", "Salvar", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
reader.Close();
}
catch (Exception ex)
{
MessageBox.Show("" + ex.Message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);
this.tabControl1.TabPages.Add(this.tabPage2);
DesabilitaCampos();
Restaura_Cor_textBox();
NoMoveReg();
}
}
Valeu muito a sua ajuda.
GOSTEI 0
Kelvin Ott
05/06/2014
Da uma testada no seu projeto com nome e login que ainda não estão cadastrados e que a senha esteja diferente uma da outra, provavelmente irá dar erro.
if ((reader.HasRows) && (reader.Read()) && (BtnAdicionar.Checked == true))
{
if (nomeTextBox.Text == reader["nome"].ToString())
{
MessageBox.Show("Nome já Cadastrado !", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning);
nomeTextBox.Focus();
nomeTextBox.ForeColor = Color.Red;
loginTextBox.ForeColor = Color.Black;
}
else if (loginTextBox.Text == reader["login"].ToString())
{
MessageBox.Show("Login já Cadastrado !", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning);
loginTextBox.Focus();
loginTextBox.ForeColor = Color.Red;
nomeTextBox.ForeColor = Color.Black;
}
}
else if (senhaTextBox.Text != ConfSenhatextbox.Text)
{
MessageBox.Show("Senhas não são Iguais !", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning);
ConfSenhatextbox.Focus();
ConfSenhatextbox.ForeColor = Color.Red;
}
else
{
this.Validate();
this.funcionarioBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.bDBibliotecaDataSet);
MessageBox.Show("Registro Salvo com Sucesso !", "Salvar", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
reader.Close();
}GOSTEI 0
Jair Souza
05/06/2014
Está funcionando em todas as situações, testado em todas as combinações.
GOSTEI 0