Como fazer else if

.NET

05/06/2014

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

Jair Souza

Curtidas 0

Respostas

Kelvin Ott

Kelvin Ott

05/06/2014

O que exatamente você quer fazer, houve algum erro?
GOSTEI 0
Jair Souza

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

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

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

Jair Souza

05/06/2014

Infelizmente já havia tentado assim.
GOSTEI 0
Kelvin Ott

Kelvin Ott

05/06/2014

Qual é o erro que da??
GOSTEI 0
Jair Souza

Jair Souza

05/06/2014

Row no exists...
GOSTEI 0
Kelvin Ott

Kelvin Ott

05/06/2014

Qual é o tipo da sua reader?
GOSTEI 0
Jair Souza

Jair Souza

05/06/2014

Desculpe..., como assim ?
GOSTEI 0
Kelvin Ott

Kelvin Ott

05/06/2014

reader = comando.ExecuteReader(CommandBehavior.CloseConnection);


Como que tu declarou esse reader?
GOSTEI 0
Kelvin Ott

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

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

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

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.
GOSTEI 0
Jair Souza

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]
GOSTEI 0
Kelvin Ott

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

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

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

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!
GOSTEI 0
Kelvin Ott

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

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 :

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

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

Jair Souza

05/06/2014

Está funcionando em todas as situações, testado em todas as combinações.
GOSTEI 0
POSTAR