Problema com SELECT Access
Bom dia, não estou conseguindo acertar este SELECT em um BD Access :
Windows Form C#.
Assim ele só lê o login, usando OR :
Assim tem de ser os dois, se não não considera, usando AND ;
Assim dá erro dizendo que o operador está errado, usando | | ...
Mas eu preciso que o SELECT pegue se o nome for igual OU o login for igual como fazer alguém sabe ?
Windows Form C#.
Assim ele só lê o login, usando OR :
OleDbCommand comando = new OleDbCommand("SELECT Nome, Login From Funcionario WHERE Nome = @nome Or Login = @login", conexao);
Assim tem de ser os dois, se não não considera, usando AND ;
OleDbCommand comando = new OleDbCommand("SELECT Nome, Login From Funcionario WHERE Nome = @nome AND Login = @login", conexao);
Assim dá erro dizendo que o operador está errado, usando | | ...
OleDbCommand comando = new OleDbCommand("SELECT Nome, Login From Funcionario WHERE Nome = @nome | | Login = @login", conexao);
Mas eu preciso que o SELECT pegue se o nome for igual OU o login for igual como fazer alguém sabe ?
Jair Souza
Curtidas 0
Respostas
William Maximo
23/05/2014
OleDbCommand comando = new OleDbCommand("SELECT Nome, Login From Funcionario WHERE Nome = @nome Or Login = @login", conexao);
a primeira opção esta correta, mas quando se usa o operação = voce tem que escrever o nome da mesma maneira que esta salvo no banco
experimente usar Like
SELECT Nome, Login From Funcionario WHERE Nome like @nome OR Login like @login
a primeira opção esta correta, mas quando se usa o operação = voce tem que escrever o nome da mesma maneira que esta salvo no banco
experimente usar Like
SELECT Nome, Login From Funcionario WHERE Nome like @nome OR Login like @login
GOSTEI 0
Jair Souza
23/05/2014
Não mudou nada com LIKE, e o curioso é que para o primeiro registro ele considera tanto o nome como o login e avisa se um OU outro já está cadastrado, mas do segundo registro em diante não...assim está o código se tiver mais uma dica agradeço muito, pois já estou a mais de dez dias lutando com esta parte do projeto...
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 LIKE @nome or Login LIKE @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) { if (reader.Read()) { if ((BtnAlterar.Checked == false)) { MessageBox.Show("Nome ou Login já Cadastrado !", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning); nomeTextBox.Focus(); }
GOSTEI 0
Jair Souza
23/05/2014
Achei o problema, estava no BD, nos espaços entre nome e sobrenomes.
Exemplo :
João da Silva Souza.
Joãodasilvasouza, deixei assim no BD e pelo form de cadastro alterei para João da Silva Souza e funcionou perfeitamente, os nomes cadastrados eu tinha digitado diretamente no Access, não entendi porque isto acontece...mas resolveu.
O código ficou assim :
Exemplo :
João da Silva Souza.
Joãodasilvasouza, deixei assim no BD e pelo form de cadastro alterei para João da Silva Souza e funcionou perfeitamente, os nomes cadastrados eu tinha digitado diretamente no Access, não entendi porque isto acontece...mas resolveu.
O código ficou 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())) //se leitor tem linhas e se leitor leu. { MessageBox.Show("Nome ou Login já Cadastrado !", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning); nomeTextBox.Focus(); nomeTextBox.ForeColor = Color.Red; 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); } reader.Close(); } catch (Exception ex) { MessageBox.Show("" + ex.Message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
GOSTEI 0