none
Pegar dado com filter no BindingSource RRS feed

  • Pergunta

  • Estou brincando no vb.net para pocket pc.

    Estou usando:

    SQL 2005 Compact

    VB.net 2008

     

    Tenho um banco com meus gastos pessoais e nele eu quero pegar apenas o nome do gasto e procuralo em outra tabela para poder pegar o id dessa outra tabela.

    Se eu criar um datagrid eu consigo fazer o filtra atraves disso:

    GastoResumidoBindingSource.Filter = "NomeGasto='" & txNome.text & "'"

    Me.DataGrid1.Refresh()

    Me.DataGrid1.Update()

    Dai o resultado sai no datagrid fisico...

    Mas se eu criar um datagrid atraves de variavel ele não me retorna nada, por exemplo:

    Dim DGrid As New DataGrid

    DGrid.DataSource = GastoResumidoBindingSource

    GastoResumidoBindingSource.Filter = "NomeGasto='" & txNome.text & "'"

     

    Me.DGrid.Refresh()

    Me.DGrid.Update()

    Ele me retorna erro e não faz discriminação do erro.

    Alguma sugestão de como eu poderia fazer isso?

    Agradeço desde já!

     

    • Movido Fernanda SimõesModerator segunda-feira, 5 de julho de 2010 13:59 Movendo para um Forum especifico (De:VB.NET e Visual Basic)
    sexta-feira, 2 de julho de 2010 19:31

Respostas

  • Airton,

    Agora que percebi o que você está querendo dizer... Então, o problema é filtrar os dados e ter o resultado em algum lugar? Você já pensou em utilizar um DataView? Veja o exemplo abaixo:

    public partial class Form3 : Form
    {
      DataTable gastosPessoaisDT = new DataTable();
    
      public Form3()
      {
        InitializeComponent();
    
        gastosPessoaisDT.Columns.Add("descricao", typeof(string));
        gastosPessoaisDT.Columns.Add("valor", typeof(double));
    
        gastosPessoaisDT.Rows.Add("andre", 1);
        gastosPessoaisDT.Rows.Add("airton", 2);
        gastosPessoaisDT.Rows.Add("malange", 3);
      }
    
      private void button1_Click(object sender, EventArgs e)
      {
        DataView gastosFiltrados = new DataView(gastosPessoaisDT);
    
        gastosFiltrados.RowFilter = "descricao LIKE '%" + textBox1.Text + "%'";
        dataGrid1.DataSource = gastosFiltrados;
      }
    }
    
    

    André Alves de Lima
    Visite o meu site: http://andrealveslima.spaces.live.com
    Me siga no Twitter: @andrealveslima
    sexta-feira, 16 de julho de 2010 11:47
    Moderador

Todas as Respostas

  • PAra filtar faz assim:

    bs.Filter =

    "FirstName like'%" + TextBox5.Text + "%'"


    Just Be Humble Malange!
    sexta-feira, 2 de julho de 2010 19:56
  • Mas ai vai dar na mesma... Só estaria procurando no conteúdo de cada campo ao invés de procurar por exatamente o conteúdo... Na verdade meu problema é que ele parece não estar criando o DataGrid por variável.

    Por exemplo:

    Dim DGrid As New DataGrid
    
    DGrid.DataSource = GastoResumidoBindingSource
    
    GastoResumidoBindingSource.Filter = "NomeGasto='" & txNome.text & "'"
    
    Me.DGrid.Refresh()
    
    Me.DGrid.Update()

    Indiferente se eu colocar no lugar NomeGasto= ou NomeGasto like '% ele retorna erro ao usar um datagrid criado por string.

    Se eu colocar um datagrid na janela dai tudo funciona normalmente :/

    sábado, 3 de julho de 2010 00:28
  • Airton,

    Alguma novidade quanto a essa sua dúvida?


    André Alves de Lima
    Visite o meu site: http://andrealveslima.spaces.live.com
    Me siga no Twitter: @andrealveslima
    sexta-feira, 16 de julho de 2010 00:43
    Moderador
  • Eu fiz uma gambi... Criei uma nova form e coloquei um datagrid nela... E uso no código como formdata.datagridview1... Mas como é uma gambi... ainda aguardo encontrar uma solução melhor.
    sexta-feira, 16 de julho de 2010 01:26
  • Airton,

    Agora que percebi o que você está querendo dizer... Então, o problema é filtrar os dados e ter o resultado em algum lugar? Você já pensou em utilizar um DataView? Veja o exemplo abaixo:

    public partial class Form3 : Form
    {
      DataTable gastosPessoaisDT = new DataTable();
    
      public Form3()
      {
        InitializeComponent();
    
        gastosPessoaisDT.Columns.Add("descricao", typeof(string));
        gastosPessoaisDT.Columns.Add("valor", typeof(double));
    
        gastosPessoaisDT.Rows.Add("andre", 1);
        gastosPessoaisDT.Rows.Add("airton", 2);
        gastosPessoaisDT.Rows.Add("malange", 3);
      }
    
      private void button1_Click(object sender, EventArgs e)
      {
        DataView gastosFiltrados = new DataView(gastosPessoaisDT);
    
        gastosFiltrados.RowFilter = "descricao LIKE '%" + textBox1.Text + "%'";
        dataGrid1.DataSource = gastosFiltrados;
      }
    }
    
    

    André Alves de Lima
    Visite o meu site: http://andrealveslima.spaces.live.com
    Me siga no Twitter: @andrealveslima
    sexta-feira, 16 de julho de 2010 11:47
    Moderador
  • Deu tudo certo! Vlw ae André!

    segunda-feira, 19 de julho de 2010 17:48