Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Caros amigos, gostaria de saber como faço para mandar uma mensagem quando o Select retornar uma linha em branco, de acordo com o creitério selecionado. Tenho o seguinte código no botão Pesquisar:
private void btnPesquisar_Click(object sender, EventArgs e)
{
criterio = txtPesquisaNome.Text.ToString();
if (criterio != "")
{
sqlString = "SELECT * FROM clientes Where cli_Nome LIKE '" + criterio + "%'";
txtPesquisaNome.Focus();
this.Close();
}
else
{
MessageBox.Show("Informe o nome a procurar com pelo menos um caractere.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
txtPesquisaNome.Focus();
}
}
Quando eu digito um critério (um nome) que não existe no banco ele está me retornando uma linha em branco. Eu gostaria que me retornasse uma mensagem dizendo que o critério não foi atendido. Abaixo segue o código do formulário Pesquisar:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
namespace IpilCompleto.Clientes
{
public partial class frmPesquisarClientes : Form
{
private string criterio = "";
public string sqlString = "";
public frmPesquisarClientes()
{
InitializeComponent();
}
private void btnPesquisar_Click(object sender, EventArgs e)
{
criterio = txtPesquisaNome.Text.ToString();
if (criterio != "")
{
sqlString = "SELECT * FROM clientes Where cli_Nome LIKE '" + criterio + "%'";
txtPesquisaNome.Focus();
this.Close();
}
else
{
MessageBox.Show("Informe o nome a procurar com pelo menos um caractere.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
txtPesquisaNome.Focus();
}
}
private void btnSair_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
Fico no aguardo de uma solução. Muito obrigado.
Caro amigo, continua trazendo as linhas em branco e mostrando no grid. Estou enviando o código do formulário de chamda a pesquisa, ou seja o formulário clientes, conforme abaixo:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
namespace IpilCompleto.Clientes
{
public partial class frmClientes : Form
{
public MySqlConnection Conecta;
private MySqlDataAdapter da;
private DataSet ds;
private int linhaAtual = 0;
//Variáveis para o campo da tabela clientes
public string cli_id, cli_nome, cli_endereco, cli_email, cli_tel;
public frmClientes()
{
InitializeComponent();
}
private void iniciaAcesso()
{
//define o dataset
ds = new DataSet();
//cria uma conexão usando a string de conexão
Conecta = new MySqlConnection("Persist Security Info=False;server=localhost;database=ipil;uid=root;pwd=123456");
try
{
//abre a conexao
Conecta.Open();
}
catch (System.Exception e)
{
MessageBox.Show(e.Message.ToString());
}
if (Conecta.State == ConnectionState.Open)
{
//se a conexão estiver aberta usa uma instrução SQL para selecionar os registros da tabela clientes
//SELECT campos FROM tabela
da = new MySqlDataAdapter("SELECT * from clientes", Conecta);
da.Fill(ds, "Tabela");
//exibe os dados no datagridview
dgvDados.DataSource = ds;
dgvDados.DataMember = "Tabela";
}
}
private void obtemDadosGrid()
{
//obtem os dados do datagridview da linha selecionada usando as posições das colunas
//a primeira coluna é a coluna 0 a segunda é a coluna 1, e assim por diante
cli_id = dgvDados[0, linhaAtual].Value.ToString();
cli_nome = dgvDados[1, linhaAtual].Value.ToString();
cli_endereco = dgvDados[2, linhaAtual].Value.ToString();
cli_email = dgvDados[3, linhaAtual].Value.ToString();
cli_tel = dgvDados[4, linhaAtual].Value.ToString();
}
private void frmClientes_Load(object sender, EventArgs e)
{
//chama rotina para exibir os dados no datagridview
iniciaAcesso();
}
private void btnIncluirCli_Click(object sender, EventArgs e)
{
//instancia o formulário para incluir e exibe-o de forma modal
frmIncluirClientes Cli_Incluir = new frmIncluirClientes();
Cli_Incluir.ShowDialog();
iniciaAcesso();
}
private void btnAlterarCli_Click(object sender, EventArgs e)
{
try
{
//obtem o código do cliente a partir da linha selecionada no datagridview
cli_id = dgvDados[0, linhaAtual].Value.ToString();
}
catch (Exception ex)
{
MessageBox.Show("Erro..." + ex.Message);
}
if (linhaAtual >= 0)
{
//obtem dados do datagridview e atribui as variáveis definidas no formulario frmAlterarClientes
obtemDadosGrid();
frmAlterarClientes Cli_Alterar = new frmAlterarClientes();
//
Cli_Alterar.cli_id = cli_id;
Cli_Alterar.cli_nome = cli_nome;
Cli_Alterar.cli_endereco = cli_endereco;
Cli_Alterar.cli_email = cli_email;
Cli_Alterar.cli_tel = cli_tel;
//exibe o formulário para alteração
Cli_Alterar.ShowDialog();
//atualiza o grid e reexibe os dados
dgvDados.Update();
iniciaAcesso();
}
}
private void btnExcluirCli_Click(object sender, EventArgs e)
{
try
{
//obtem o código do cliente a partir da linha selecionada no datagridview
cli_id = dgvDados[0, linhaAtual].Value.ToString();
}
catch (Exception ex)
{
MessageBox.Show("Erro..." + ex.Message);
}
if (linhaAtual >= 0)
{
//obtem dados do datagridview e atribui as variáveis definidas no formulario frmExcluirClientes
obtemDadosGrid();
frmExcluirClientes Cli_Excluir = new frmExcluirClientes();
//
Cli_Excluir.cli_id = cli_id;
Cli_Excluir.cli_nome = cli_nome;
Cli_Excluir.cli_endereco = cli_endereco;
Cli_Excluir.cli_email = cli_email;
Cli_Excluir.cli_tel = cli_tel;
//exibe o formulário para exclusão
Cli_Excluir.ShowDialog();
//atualiza o grid e reexibe os dados
dgvDados.Update();
iniciaAcesso();
}
}
private void btnProcurarCli_Click(object sender, EventArgs e)
{
frmPesquisarClientes Cli_Pesquisar = new frmPesquisarClientes();
Cli_Pesquisar.ShowDialog();
if (Cli_Pesquisar.sqlString != null && Cli_Pesquisar.sqlString != "")
carregaGrid(Cli_Pesquisar.sqlString);
}
private void carregaGrid(string criterioSQL)
{
//define o dataset
ds = new DataSet();
//cria uma conexão usando a string de conexão
Conecta = new MySqlConnection("Persist Security Info=False;server=localhost;database=ipil;uid=root;pwd=123456");
try
{
//abre a conexao
Conecta.Open();
}
catch (System.Exception e)
{
MessageBox.Show(e.Message.ToString());
}
if (Conecta.State == ConnectionState.Open)
{
//se a conexão estiver aberta usa uma instrução SQL para selecionar os registros da tabela clientes
//SELECT campos FROM tabela
da = new MySqlDataAdapter(criterioSQL, Conecta);
da.Fill(ds, "Tabela");
//exibe os dados no datagridview
dgvDados.DataSource = ds;
dgvDados.DataMember = "Tabela";
}
}
private void btnSairCli_Click(object sender, EventArgs e)
{
this.Close();
}
private void dgvDados_CellClick(object sender, DataGridViewCellEventArgs e)
{
linhaAtual = int.Parse(e.RowIndex.ToString());
}
}
}
Este é o código do formulário Pesquisar clientes, com a alteração que você recomendou:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
namespace IpilCompleto.Clientes
{
public partial class frmPesquisarClientes : Form
{
public string criterio = "";
public string sqlString;
public frmPesquisarClientes()
{
InitializeComponent();
}
private void btnPesquisar_Click(object sender, EventArgs e)
{
criterio = txtPesquisaNome.Text;
if (criterio != "")
{
sqlString = "SELECT * FROM clientes Where cli_Nome LIKE '" + criterio + "%'";
this.Close();
}
else
{
MessageBox.Show("Informe o nome a procurar com pelo menos um caractere.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
txtPesquisaNome.Focus();
}
}
public bool VerificaSeBuscaValida(string criterio)
{
MySqlConnection sqlString = new MySqlConnection();
try
{
sqlString.ConnectionString = ("Persist Security Info=False;server=localhost;database=ipil;uid=root;pwd=123456");
MySqlDataReader reader;
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = sqlString;
cmd.CommandText = "SELECT * FROM clientes Where cli_Nome LIKE '" + criterio + "%'";
sqlString.Open();
reader = cmd.ExecuteReader();
if (reader.HasRows)
{
return true;
}
else
{
return false;
}
}
catch (MySqlException ex)
{
throw new Exception(ex.Message);
}
finally
{
sqlString.Close();
}
}
private void btnSair_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
Não consigo identificar o erro. Se for possível verificar eu agraderia muito. Fico no aguardo do contato. :(
Segue um exemplo que pode usar... Esse metodo eu passo data e hora como parametro, e faço a select para saber se ha algum agendamento nesse dia e horário, se tiver, meu objeto reader vai ter linhas (pode ver que pergunto pra ele se tem linhas(HasRows)) e me retornara true, se não houver linhas (não me retornar nada) retorno um false.
Com base nisto, chamo o método e se me retornar true, então não posso deixar agendar esse horário e mostro a mensagem para escolher outro horário, senão libero para fazer o agendamento.
Partindo dessa idéia da pra você resolver seu problema, faz a select, joga num DataReader, se ela não tiver linhas,você mostra a mensagem que quer...
public bool testaDisponibilidade(string data, string hora)
{
Só uma observação
o conteudo do textbox ja é uma string...