none
Pesquisar na Datagridview preenchida com Inner Join? RRS feed

  • Pergunta

  • E aí gente, mais uma vez obrigado desde já por qualquer ajuda.

    Então, eu tenho uma datagridview , eu carrego ela da seguinte forma:

        Public Sub CarregaDTGV()
            Using con As OleDbConnection = conexao()
                Try
                    con.Open()
                    Dim sql As String
                    sql = "SELECT Clientes.Nome_Completo, Clientes.Endereco, ClientesMensalidades.status, ClientesMensalidades.Vencimento, Servicos_mensais.Complemento, Servicos_mensais.Valor_mensal"
                    sql += " FROM Clientes INNER JOIN (Servicos_mensais INNER JOIN ClientesMensalidades ON Servicos_mensais.[id_mensalidade] = ClientesMensalidades.[id_mensalidade]) ON Clientes.[id_cliente] = ClientesMensalidades.[id_cliente];"
                    Dim cmd As OleDbCommand = New OleDbCommand(sql, con)
                    Dim da As OleDbDataAdapter = New OleDbDataAdapter(cmd)
                    Dim dt As DataTable = New DataTable
                    da.Fill(dt)
                    Servicos_mensaisDataGridView.DataSource = dt
                    formataview()
                    PoemCifrao()
                    VerificaStatus()
                Catch ex As Exception
                    MsgBox(ex.ToString)
                Finally
                    con.Close()
                End Try
            End Using
        End Sub

    Gostaria de saber nesse mesmo raciocinio, como eu faço uma pesquisa. Já que se eu tivesse um bindingsource seria Meubindingsource.Filter = "LIKE etc..."

    Mas como é preenchida a mão como eu faço?

    domingo, 13 de novembro de 2016 21:03

Respostas

  • Olá,

    Você precisa fazer uma query com uma cláusula WHERE (que serve para filtrar os dados da consulta).

    Usando o seu exemplo, segue uma query, filtrando pelo nome do Cliente através de uma textbox:

            Public Sub CarregaDTGV()
            Using con As OleDbConnection = conexao()
                Try
                    con.Open()
                    Dim sql As String
                    sql = "SELECT Clientes.Nome_Completo, Clientes.Endereco, ClientesMensalidades.status, ClientesMensalidades.Vencimento, Servicos_mensais.Complemento, Servicos_mensais.Valor_mensal"
                    sql += " FROM Clientes INNER JOIN (Servicos_mensais INNER JOIN ClientesMensalidades ON Servicos_mensais.[id_mensalidade] = ClientesMensalidades.[id_mensalidade]) ON Clientes.[id_cliente] = ClientesMensalidades.[id_cliente]"
                    sql += " WHERE Clientes.Nome_Completo LIKE '%@Nome%'"
                    Dim cmd As OleDbCommand = New OleDbCommand(sql, con)
                    Dim parameter As OleDbParameter = New OleDbParameter("@Nome", textbox1.Text)
                    cmd.Parameters.Add(parameter)
                    Dim da As OleDbDataAdapter = New OleDbDataAdapter(cmd)
                    Dim dt As DataTable = New DataTable
                    da.Fill(dt)
                    Servicos_mensaisDataGridView.DataSource = dt
                    formataview()
                    PoemCifrao()
                    VerificaStatus()
                Catch ex As Exception
                    MsgBox(ex.ToString)
                Finally
                    con.Close()
                End Try
            End Using
        End Sub

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco




    domingo, 13 de novembro de 2016 21:13

Todas as Respostas

  • Olá,

    Você precisa fazer uma query com uma cláusula WHERE (que serve para filtrar os dados da consulta).

    Usando o seu exemplo, segue uma query, filtrando pelo nome do Cliente através de uma textbox:

            Public Sub CarregaDTGV()
            Using con As OleDbConnection = conexao()
                Try
                    con.Open()
                    Dim sql As String
                    sql = "SELECT Clientes.Nome_Completo, Clientes.Endereco, ClientesMensalidades.status, ClientesMensalidades.Vencimento, Servicos_mensais.Complemento, Servicos_mensais.Valor_mensal"
                    sql += " FROM Clientes INNER JOIN (Servicos_mensais INNER JOIN ClientesMensalidades ON Servicos_mensais.[id_mensalidade] = ClientesMensalidades.[id_mensalidade]) ON Clientes.[id_cliente] = ClientesMensalidades.[id_cliente]"
                    sql += " WHERE Clientes.Nome_Completo LIKE '%@Nome%'"
                    Dim cmd As OleDbCommand = New OleDbCommand(sql, con)
                    Dim parameter As OleDbParameter = New OleDbParameter("@Nome", textbox1.Text)
                    cmd.Parameters.Add(parameter)
                    Dim da As OleDbDataAdapter = New OleDbDataAdapter(cmd)
                    Dim dt As DataTable = New DataTable
                    da.Fill(dt)
                    Servicos_mensaisDataGridView.DataSource = dt
                    formataview()
                    PoemCifrao()
                    VerificaStatus()
                Catch ex As Exception
                    MsgBox(ex.ToString)
                Finally
                    con.Close()
                End Try
            End Using
        End Sub

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco




    domingo, 13 de novembro de 2016 21:13
  • Você sempre me salvando no sufoco! Rsrsrs

    Obrigado cara!

    domingo, 13 de novembro de 2016 22:27