Inquiridor
Visualizar pesquisa em um DataGridView

Pergunta
-
to tentando exibir o resultado de uma pesquisa em um DataGridView mas ta acontecendo um erro
o codigo e o seguinte
Classes.CadastroUsuarios.ClasseControleCadastroUsuarios controle = new Classes.CadastroUsuarios.ClasseControleCadastroUsuarios();
OdbcCommand sql = new OdbcCommand();
sql = controle.pesquisar(toolStripComboBoxCampoPesquisar.Text, toolStripTextBoxPesquisar.Text);
if (sql != null)
{
OdbcConnection conexao = new OdbcConnection("Dsn=PostgreSQL30;Server=localhost;Database=ProjetoGerenciador;User ID=BrunoAlisson;Password=BrunoAlisson;");OdbcDataAdapter da = new OdbcDataAdapter(sql.CommandText, conexao);
DataSet ds = new DataSet();
try
{
conexao.Open();
da.Fill(ds, "\"Usuario\"");
dataGridViewCadastroUsuarios.DataSource = ds.Tables["\"Usuario\""];
da.Update(ds, "\"Usuario\"");
usuarioBindingSource.DataSource = ds.Tables["\"Usuario\""];
}
finally
{
conexao.Close();
}}
else
{
MessageBox.Show("Nada encontrado!", "Resultado", MessageBoxButtons.OK, MessageBoxIcon.Error);}
depois uso uma classe de persistencia para montar a sql
OdbcConnection conexao = new OdbcConnection("Dsn=PostgreSQL30;Server=localhost;Database=ProjetoGerenciador;User ID=BrunoAlisson;Password=BrunoAlisson;");
OdbcCommand sql = null;
switch (campo)
{
case("Código"):
sql = new OdbcCommand ("Select * from \"Usuario\" where \"id\" = (?);", conexao);
sql.Parameters.Add("@\"id\"", OdbcType.VarChar).Value = texto;
return sql;
//da = new OdbcDataAdapter(sql.CommandText, conexao);
//return da;
break;
case ("Nome"):
sql = new OdbcCommand("Select * from \"Usuario\" where \"nome\" = (?);", conexao);
sql.Parameters.Add("@\"nome\"", OdbcType.VarChar).Value = texto;
return sql;
//da = new OdbcDataAdapter(sql.CommandText, conexao);
//return da;
break;
case ("Login"):
sql = new OdbcCommand("Select * from \"Usuario\" where \"login\" = (?);", conexao);
sql.Parameters.Add("@\"login\"", OdbcType.VarChar).Value = texto;
return sql;
//da = new OdbcDataAdapter(sql.CommandText, conexao);
//return da;
break;
case ("Usuário Responsável"):
sql = new OdbcCommand("Select * from \"Usuario\" where \"usuarioResponsavel\" = (?);", conexao);
sql.Parameters.Add("@\"usuarioResponsavel\"", OdbcType.VarChar).Value = texto;
return sql;
//da = new OdbcDataAdapter(sql.CommandText, conexao);
//return da;
break;
default:
return sql;
}
e o erro q acontece e o seguinte:
{"ERROR [07002] The # of binded parameters < the # of parameter markers"}
- Editado BrunoAlisson sexta-feira, 30 de janeiro de 2015 17:52
Todas as Respostas
-
Pelo jeito é um bug do driver ODBC:
http://markmail.org/message/puizlyxosy3d4mrm
-
Bruno,
este erro ocorre por que quando o .net tenta fazer a associação dos atributos "bindados" com o seu comando de insert ou update, ele encontra menos binds do que os parametros da query. Estou tendo essa dificuldade agora por que estou com um checkbox com valor "S" ou "N" (que não posso mudar o tipo da coluna no banco) e para mostrar os valores desses checkboxes na tela eu uso este comando:
<%# "S".Equals(Eval("atualizado_firmware")) %>
No seu caso, use o mesmo número de binds dos parâmetros que vc tem na sua query...
No meu caso, alguém tem alguma idéia?
Abrax e bons códigos...
-