Usuário com melhor resposta
DataGrid em branco.

Pergunta
-
Pessoal,
Preciso de uma ajuda de vcs...
Tenho um datagrid onde consulto o banco e trago alguns dados, coisa que estava funcionando normalmente, mas aqui não funciona, esta aparecendo tudo em branco... "sem dados".
Veja se alguem pode me ajudar... segue meu código:
Chamada:
private void btconsultapedido_Click(object sender, EventArgs e)
{
ConsultaPedidos pesquisa = new ConsultaPedidos(ref dtConsultaPedidos);
pesquisa.ConsultaGeralPedidos(ref dtConsultaPedidos, cbescolharazao, dt3, dt4, txtvalortotalped);
}Função:
namespace RMBR
{class ConsultaPedidos
{
DataGridView dtgridconspedido;
private DataGridView dtConsultaPedidos;public ConsultaPedidos(ref DataGridView dtConsultaPedidos)
{
this.dtConsultaPedidos = dtConsultaPedidos;
this.dtgridconspedido = dtConsultaPedidos;
}
public void ConsultaGeralPedidos(ref DataGridView dtConsultaPedidos, ComboBox cbescolharazao, DateTimePicker dt3, DateTimePicker dt4, TextBox txtvalortotalped)
{
string connection = ConfigurationManager.ConnectionStrings["AccessConnectionString"].ConnectionString;OleDbConnection cn = null;
OleDbCommand cmd = null;string datacons = dt3.Text;
DateTime data3 = Convert.ToDateTime(datacons);
string datacons1 = dt4.Text;
DateTime data4 = Convert.ToDateTime(datacons1);
/*string horacons = txtconspedhora.Text;
DateTime hora = Convert.ToDateTime(horacons);*/string sql = "SELECT [PEDRAZAO], [PEDENDENTREGA], [PEDPRODUTO], [PEDUNIDADE], [PEDQUANTIDADE], [PEDPESO], [PEDVALORUN], [PEDVALORTOTAL], [PEDNUMNF] FROM CADPEDIDO WHERE PEDRAZAO LIKE '%" + cbescolharazao.Text + "%' AND PEDDATA >= #" + data3 + "# AND PEDDATA <= #" + data4 + "#";
try
{
cn = new OleDbConnection();
cn.ConnectionString = connection;
cn.Open();cmd = new OleDbCommand(sql, cn);
cmd.CommandType = CommandType.Text;DataTable dt = new DataTable("Pedidos");
OleDbDataAdapter adaptador = new OleDbDataAdapter();
adaptador.SelectCommand = cmd;
adaptador.Fill(dt);
dtgridconspedido.DataSource = dt;dtgridconspedido.Columns["PEDRAZAO"].HeaderText = "Razão Social";
dtgridconspedido.Columns["PEDRAZAO"].Width = 300;
dtgridconspedido.Columns["PEDENDENTREGA"].HeaderText = "Endreço de Entrega";
dtgridconspedido.Columns["PEDENDENTREGA"].Width = 220;
dtgridconspedido.Columns["PEDPRODUTO"].HeaderText = "Produto";
dtgridconspedido.Columns["PEDPRODUTO"].Width = 170;
dtgridconspedido.Columns["PEDUNIDADE"].HeaderText = "UN";
dtgridconspedido.Columns["PEDUNIDADE"].Width = 40;
dtgridconspedido.Columns["PEDQUANTIDADE"].HeaderText = "QTD";
dtgridconspedido.Columns["PEDQUANTIDADE"].Width = 40;
dtgridconspedido.Columns["PEDPESO"].HeaderText = "Peso";
dtgridconspedido.Columns["PEDPESO"].Width = 50;
dtgridconspedido.Columns["PEDVALORUN"].HeaderText = "Valor UN";
dtgridconspedido.Columns["PEDVALORUN"].Width = 50;
dtgridconspedido.Columns["PEDVALORTOTAL"].HeaderText = "Valor Total";
dtgridconspedido.Columns["PEDVALORTOTAL"].Width = 60;
dtgridconspedido.Columns["PEDNUMNF"].HeaderText = "Numero NF";
dtgridconspedido.Columns["PEDNUMNF"].Width = 150;decimal soma = 0;
foreach (DataGridViewRow dr in dtConsultaPedidos.Rows)
soma += Convert.ToDecimal(dr.Cells["PEDVALORTOTAL"].Value);
txtvalortotalped.Text = Convert.ToString(soma);
Math.Ceiling(soma);dt.Rows.Add(" ");
dt.Rows.Add("VALOR PEDIDO :", soma);var _with1 = dtConsultaPedidos;
_with1.ForeColor = Color.Blue;
_with1.Font = new Font("Arial", 7f);cn.Close();
}
catch (Exception ex)
{
string erro = string.Empty;
erro = ex.Message;
if (ex.InnerException != null)
erro += Environment.NewLine + ex.InnerException.Message;
MessageBox.Show(erro);
}
}
}
}Desde já muito obrigado...
Luiz Carlos
Respostas
-
Assim:
// JAMAIS UTILIZE INSTRUÇÕES SQL COMO ESTA , perigo de injeção SQL com código malicioso //SqlCommand cmd = new SqlCommand(Select * from Customers where city = '" + txtcidade.text + "'"; // 1. declara o objeto command com parâmetro SqlCommand cmd = new SqlCommand("select * from Customers where city = @Cidade", conn); // 2. define os parêmetros usados no objeto command SqlParameter param = new SqlParameter(); param.ParameterName = "@Cidade"; param.Value = cboCidade.Text; // 3. inclui um novo parâmetro ao comando cmd.Parameters.Add(param);
- Marcado como Resposta LC-Locker terça-feira, 19 de março de 2013 17:20
Todas as Respostas
-
-
Fiz alguns testes e ele não esta retornando nesse momento -> FROM CADPEDIDO WHERE PEDRAZAO LIKE '%" + cbescolharazao.Text + "%' AND PEDDATA >= #" + data3 + "# AND PEDDATA <= #" + data4 + "#";
Este -> AND PEDDATA <= #" + data4 + "#" não esta funcionando mas não entendi o pq? estava tudo ok... e funcionava normalmente...
Luiz Carlos
-
Nunca se deve concatenar os valores assim para criar uma query.
Deve usar parâmetros, veja aqui nesse link possui vários tutoriais. É só procurar ali que você vai encontrar como fazer acesso a dados da maneira correta. Usando parâmetros no SqlCommand, ele faz automaticamente a conversão para o formato correto de data do banco de dados.
http://social.msdn.microsoft.com/Forums/pt-BR/vscsharppt/thread/52255833-a691-4fed-9db3-832d68a00ff8
-
-
-
-
Assim:
// JAMAIS UTILIZE INSTRUÇÕES SQL COMO ESTA , perigo de injeção SQL com código malicioso //SqlCommand cmd = new SqlCommand(Select * from Customers where city = '" + txtcidade.text + "'"; // 1. declara o objeto command com parâmetro SqlCommand cmd = new SqlCommand("select * from Customers where city = @Cidade", conn); // 2. define os parêmetros usados no objeto command SqlParameter param = new SqlParameter(); param.ParameterName = "@Cidade"; param.Value = cboCidade.Text; // 3. inclui um novo parâmetro ao comando cmd.Parameters.Add(param);
- Marcado como Resposta LC-Locker terça-feira, 19 de março de 2013 17:20