Array
(
)

Como fazer else if

Jair Souza
   - 05 jun 2014

Pessoal consegui chegar até aqui com este código, mas não sei como concluir, alguém sabe ?
#Código

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);

Kelvin Ott
   - 05 jun 2014

O que exatamente você quer fazer, houve algum erro?

Jair Souza
   - 05 jun 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"...

Jair Souza
   - 05 jun 2014

...veja como iniciei os "else if " dentro dos parenteses (nomeTextBox.Text = ), deve ser igual a que, considerando o read acima... ?

Kelvin Ott
   - 05 jun 2014

Tenta isso, se funcionar da um retorno.

#Código

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);
		}
		
	}
}

 

Jair Souza
   - 05 jun 2014

Infelizmente já havia tentado assim.

Kelvin Ott
   - 05 jun 2014

Qual é o erro que da??

Jair Souza
   - 05 jun 2014

Row no exists...

Kelvin Ott
   - 05 jun 2014

Qual é o tipo da sua reader?

Jair Souza
   - 05 jun 2014

Desculpe..., como assim ?

Kelvin Ott
   - 05 jun 2014

#Código

reader = comando.ExecuteReader(CommandBehavior.CloseConnection);


Como que tu declarou esse reader?

Kelvin Ott
   - 05 jun 2014

Foi mal, passou despercebido e que to na correria, já dou uma olhada pra você hehehe.

Kelvin Ott
   - 05 jun 2014

Tenta mudar isso ve se vai...

#Código

OleDbCommand comando = new OleDbCommand("SELECT Nome as nome, Login as login FROM Funcionario WHERE Nome = @nome OR Login = @login", conexao);

Jair Souza
   - 05 jun 2014

Está assim, e não funcionou...vai direto pro else e salva tudo sempre... :

#Código

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);

Kelvin Ott
   - 06 jun 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.

Jair Souza
   - 06 jun 2014

Deixando como abaixo, funciona e não deixa salvar...mas como quero especificar qual campo já existe....

Clique na imagem para abrir em uma nova janela

Kelvin Ott
   - 06 jun 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.

#Código

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;
 
                    }

Jair Souza
   - 06 jun 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.

Kelvin Ott
   - 06 jun 2014

Consegue por um break point no if e me dizer o que retorna essa parte?
#Código

reader["nome"].ToString()

Jair Souza
   - 06 jun 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!

Kelvin Ott
   - 06 jun 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.