none
No overload for method 'Fill' takes 2 arguments RRS feed

  • Pergunta

  • Bom dia, 

    Estou gerando um relatório através do ReportViewer, e funcionou perfeitamente, porém tive a necessidade de colocar o filtro parcial para pesquisar por cidade, ou seja se digitar TRÊS, é necessário aparecer todas as cidades que começam com a palavra TRÊS.

    Para isso no meu dataset, o select ficou dessa forma:

    SELECT * from naocliente where (status_naocliente) = 'N' and cidade_naocliente like '@cidade%'


    e o código no form assim:

    {
                    MessageBox.Show("Aguarde enquanto o relatório está sendo gerado!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    this.NAOCLIENTE_CIDADETableAdapter.Fill(this.DATA01.NAOCLIENTE_CIDADE, cidade); // cidade é uma variável que recebe o txtcidade
                    
                    this.reportViewer1.RefreshReport();
    }

    porém quando tento executa o projeto, me fornece o seguinte erro "No overload for method 'Fill' takes 2 arguments"

    se eu tiro a variável cidade, ele roda, porém não funciona o relatório, pois não tem a variável para realizar o filtro da pesquisa.

    Obrigado :)

    terça-feira, 18 de agosto de 2015 13:01

Respostas

  • mas o filtro nao é um argumento do metodo fill. para isso voce tem que usar os parametros do dataadapter, mais ou menos deste jeito:

    SqlDataAdapter da;
    da = new SqlDataAdapter("SELECT * FROM annotations WHERE annotation LIKE @search",
                            _mssqlCon.connection);
    da.SelectCommand.Parameters.AddWithValue("@search","%" + txtSearch.Text + "%");
    var dt = new DataTable();
    da.Fill(dt);

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Marcado como Resposta Mariana C. Costa terça-feira, 18 de agosto de 2015 18:46
    terça-feira, 18 de agosto de 2015 13:16
    Moderador

Todas as Respostas

  • mas o filtro nao é um argumento do metodo fill. para isso voce tem que usar os parametros do dataadapter, mais ou menos deste jeito:

    SqlDataAdapter da;
    da = new SqlDataAdapter("SELECT * FROM annotations WHERE annotation LIKE @search",
                            _mssqlCon.connection);
    da.SelectCommand.Parameters.AddWithValue("@search","%" + txtSearch.Text + "%");
    var dt = new DataTable();
    da.Fill(dt);

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Marcado como Resposta Mariana C. Costa terça-feira, 18 de agosto de 2015 18:46
    terça-feira, 18 de agosto de 2015 13:16
    Moderador
  • Willian, eu coloquei dessa foma: 

      SqlDataAdapter da;
                    da = new SqlDataAdapter("SELECT * from naocliente where (status_naocliente) = 'N' and cidade_naocliente like '@cidade%'", conexao);
                    da.SelectCommand.Parameters.AddWithValue("@cidade", "%" + txtcidade.Text + "%");
                    var dt = new DataTable();
                    da.Fill(dt);
                    MessageBox.Show("Aguarde enquanto o relatório está sendo gerado!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    this.NAOCLIENTE_CIDADETableAdapter.Fill(this.DATA01.NAOCLIENTE_CIDADE);
                    
                    this.reportViewer1.RefreshReport();

    porém não me mostra nenhum resultado, poderia verificar se está faltando algo, por favor? Obrigado.

    terça-feira, 18 de agosto de 2015 13:39
  • o que eu coloquei era um exemplo e tinha que ser adaptado... seu codigo ja tinha um dataadpter (NAOCLIENTE_CIDADETableAdapter) e ja tinha um datattable tambem (NAOCLIENTE_CIDADE)... tudo o que vc tinha a fazer era adicionar os parametros.

    ficaria mais ou menos assim:

    this.NAOCLIENTE_CIDADETableAdapter.SelectCommand.Parameters.AddWithValue("@cidade", "%" + txtcidade.Text + "%");
    MessageBox.Show("Aguarde enquanto o relatório está sendo gerado!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information);
    this.NAOCLIENTE_CIDADETableAdapter.Fill(this.DATA01.NAOCLIENTE_CIDADE);
    this.reportViewer1.RefreshReport();

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    terça-feira, 18 de agosto de 2015 13:46
    Moderador
  • Eu havia tentado dessa forma, porém da erro no SelectCommand, tentei de várias formas, porém dá erro ao executar o projeto.
    terça-feira, 18 de agosto de 2015 15:00
  • Voce pode mostrar como esta o selectcommand?

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    terça-feira, 18 de agosto de 2015 15:06
    Moderador
  • Me desculpe, ficou um pouco confuso, já tentei de várias formas rs

    Eu tento colocar o mesmo select que está no NAOCLIENTE_CIDADE, não consigo, e eu colocando o no string sql NAOCLIENTE_CIDADETableAdapter, dá erro, só aceita eu colocando .toString() e roda, porém não me retorna nenhum dado.

    terça-feira, 18 de agosto de 2015 17:37
  • isso é um datatable?

    this.DATA01.NAOCLIENTE_CIDADE

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    terça-feira, 18 de agosto de 2015 18:04
    Moderador
  • Willian me desculpe, finalmente consegui resolver, obrigado pela ajuda.

    No select coloquei:

    SELECT * from naocliente where status_naocliente = 'N' and cidade_naocliente like @cidade

    e alterei essa linha para:

    MessageBox.Show("Aguarde enquanto o relatório está sendo gerado!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information);
    
                    this.NAOCLIENTE_CIDADETableAdapter.Fill(this.DATA01.NAOCLIENTE_CIDADE, "%" + txtcidade.Text + "%");
                    this.reportViewer1.RefreshReport();

    Funcionou perfeitamente, rs :D

    terça-feira, 18 de agosto de 2015 18:46