BUSCAR ATRAVES DO TEXTBOX E EXIBIR NO GRID

 Tópico anterior Próximo tópico Novo tópico

BUSCAR ATRAVES DO TEXTBOX E EXIBIR NO GRID

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#339699 - 19/04/2010 09:29:13

ALEXANDREHKK
CAMPINAS
Cadast. em:Abril/2010


Última edição em 19/04/2010 13:21:48 por ALEXANDREHKK

bom dia pessoal, uso o vb 2008 com mysql e gostaria de fazer o seguinte, tenho registros no banco e no meu form tenho um botão para pesquisar, a idéia é a seguinte, quero fazer um if para verificar qual campo está preenchido e pesquisar esse campo no bd e exibir o registro completo no datagrid, porém, estou encontrando uma dificuldade, não consigo fazer.... segue abaixo o meu código, sou iniciante na programação e estou começando sozinho, portanto gostaria também, se alguem tiver uma sugestão ela será aceita. Obrigado

'Create connection
        Dim conn As Common.DbConnection

        'create data adapter
        Dim da As Common.DbDataAdapter

        'create dataset
        Dim ds As DataSet = New DataSet

        'Set up connection string
        Dim cnString As String

        Dim sqlQRY As String

        Label8.Visible = True


        cnString = "datasource=192.168.25.1;username=root;password=123456;database=basededados"



        If txtCadLogin.Text = "" Then
            MessageBox.Show("erro")

        Else


            sqlQRY = "Select * from usuarios where login = '" & txtCadLogin.Text & "'  "  'Aqui vc coloca o Codigo do registro clicado

            conn = New MySqlConnection(cnString)

            Try
                ' Open connection
                conn.Open()

                da = New MySqlDataAdapter(sqlQRY, conn)

                'create command builder
                Dim cb As MySqlCommandBuilder = New MySqlCommandBuilder(da)

                'fill dataset  
                da.Fill(ds, "Customers")


            Catch ex As Common.DbException
                MsgBox(ex.ToString)
            Finally
                ' Close connection
                conn.Close()
            End Try

        End If

        If txtCadNome.Text = "" Then
            MessageBox.Show("erro")

        Else

            sqlQRY = "Select * from usuarios where nome = '" & txtCadNome.Text & "'  "  'Aqui vc coloca o Codigo do registro clicado

            conn = New MySqlConnection(cnString)

            Try
                ' Open connection
                conn.Open()

                da = New MySqlDataAdapter(sqlQRY, conn)

                'create command builder
                Dim cb As MySqlCommandBuilder = New MySqlCommandBuilder(da)

                'fill dataset  
                da.Fill(ds, "Customers")


            Catch ex As Common.DbException
                MsgBox(ex.ToString)
            Finally
                ' Close connection
                conn.Close()
            End Try

        End If



        If cboPerm.Text = "" Then
            MessageBox.Show("erro")

        Else

            sqlQRY = "Select * from usuarios where permissao = '" & cboPerm.Text & "'  "  'Aqui vc coloca o Codigo do registro clicado

            conn = New MySqlConnection(cnString)

            Try
                ' Open connection
                conn.Open()

                da = New MySqlDataAdapter(sqlQRY, conn)

                'create command builder
                Dim cb As MySqlCommandBuilder = New MySqlCommandBuilder(da)

                'fill dataset  
                da.Fill(ds, "Customers")


            Catch ex As Common.DbException
                MsgBox(ex.ToString)
            Finally
                ' Close connection
                conn.Close()
            End Try

        End If
    End Sub



#339739 - 19/04/2010 17:56:38

ADHEL
PRAIA GRANDE
Cadast. em:Junho/2009


Alexandre
Se eu entendi direito na sua explicação(Não no código que você postou)
Você tem 3 caixas de texto e quer fazer a pesquisa no caixa que estiver algum conteúdo digitado.
Bom se for isso vou colocar um exemplo que fiz aqui para teste que pesquisa apenas uma caixa de texto.

Não vou me ater a conexão ,como você disse que já existe dados gravados, vamos lá


Private Sub btnPesquisar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPesquisar.Click
        Dim da As MySqlDataAdapter
        Dim ds As DataSet


        sqlSelect = "Select Codigo,Nome,Embalagem,Marca,Quantidade,PrecoVenda from Produtos Where Nome Like '%" & txtConsulta.Text & "%'"

        da = New MySqlDataAdapter(sqlSelect, Conexao)
        ds = New DataSet

        da.Fill(ds, "Produtos")
        dgvConsulta.DataSource = ds.Tables("Produtos") Nessa linha você NÂO colocou o seu  Datagrid

         Aqui eu defini o tamanho das colunas.O resto estava no tamanho adequado e não precisei alterar

        With dgvConsulta
            .Columns(1).Width = 300
            .Columns(2).Width = 150
            .Columns(3).Width = 200

        End With
        

  End Sub


Tente fazer com apenas uma caixa de texto e me diga o resultado.Não fiz tratamento de erros,lembrando que é um exemplo e aqui deu certo.





Resposta escolhida #339759 - 20/04/2010 08:28:47

KILLER
JM
Cadast. em:Março/2010


voce deveria colocar 3 radiobuttons para fazer isso, te pergunto e se o usuario digitar em duas caixas de texto como ficaria?

outra coisa, não vi se vc colocou sua grid para receber o dataset

dgv.DataSource = ds.Tables(0)

A mente que se abre a uma nova idéia jamais voltará ao seu tamanho original. Albert Einstein

#339913 - 22/04/2010 10:02:39

ALEXANDREHKK
CAMPINAS
Cadast. em:Abril/2010


 Anexos estao visíveis somente para usuários registrados

bom dia pessoal, obrigado pela ajuda, não entendi muito bem, sinceramente sou perdido nessa parte do grid... gostaria que alguem me explicasse passo-a-passo por gentileza,
no meu sistema eu farei o seguinte, farei um IF para verificar qual caixa de texto está preenchida, a que tiver ele pesquisa, porém se tiver 2 caixas de texto preenchidas acho que terei um problema, assim como o killer falou...
Quero pesquisar a caixa de texto que estiver preenchida e o grid ser atualizado apenas com a pesquisa, pois no load do formulário eu já pedi para exibir todos os registros existentes, porém quando insiro o código da pesquisa ela deveria atualizar o grid com apenas o resultado da pesquisa, correto? não estou conseguindo fazer isso... vou postar meu código abaixo e tambem um print do sisteminha.
Obrigado

'Create connection
        Dim conn As Common.DbConnection

        'create data adapter
        Dim da As Common.DbDataAdapter

        'create dataset
        Dim ds As DataSet = New DataSet

        'Set up connection string
        Dim cnString As String

        Dim sqlQRY As String

        'Label8.Visible = True


        cnString = "datasource=192.168.25.1;username=root;password=123456;database=basededados"

        sqlQRY = "Select login, senha, nome, permissao from usuarios Where login Like '%" + txtCadLogin.Text + "%'"


        conn = New MySqlConnection(cnString)

        Try
            ' Open connection
            conn.Open()

            da = New MySqlDataAdapter(sqlQRY, conn)

            'create command builder
            Dim cb As MySqlCommandBuilder = New MySqlCommandBuilder(da)


            'da.Fill(ds, "Customers")
            da.Fill(ds, sqlQRY)

Catch ex As Common.DbException
            MsgBox(ex.ToString)
        Finally
            ' Close connection
            conn.Close()
        End Try



#339959 - 22/04/2010 15:52:10

KILLER
JM
Cadast. em:Março/2010


Tenta fazer assim, funciona com 1 caixa de texto

Imports MySql.Data.MySqlClient
Public Class Form1
    Dim conn As MySqlConnection
    Dim da As MySqlDataAdapter
    Dim Comando As MySqlCommand

    Private Sub txtCadLogin_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtCadLogin.TextChanged
        Dim ds As DataSet = New DataSet
        Dim sqlQRY As String

        conn = New MySqlConnection("datasource=192.168.25.1;username=root;password=123456;database=basededados")
        sqlQRY = "Select login, senha, nome, permissao from usuarios Where login Like '%" + txtCadLogin.Text + "%'"

        Try
            conn.Open()
            da = New MySqlDataAdapter(sqlQRY, conn)
            Comando = New MySqlCommand(sqlQRY, conn)
            da.SelectCommand = Comando
            da.Fill(ds)

            dgv.DataSource = ds.Tables(0)

        Catch ex As Common.DbException
            MsgBox(ex.ToString)
        Finally
            ' Close connection
            conn.Close()
        End Try
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim ds As DataSet = New DataSet
        Dim sqlQRY As String

        conn = New MySqlConnection("datasource=192.168.25.1;username=root;password=123456;database=basededados")
        sqlQRY = "Select login, senha, nome, permissao from usuarios "

        Try
            conn.Open()
            da = New MySqlDataAdapter(sqlQRY, conn)
            Comando = New MySqlCommand(sqlQRY, conn)
            da.SelectCommand = Comando
            da.Fill(ds)

            dgv.DataSource = ds.Tables(0)

        Catch ex As Common.DbException
            MsgBox(ex.ToString)
        Finally
            ' Close connection
            conn.Close()
        End Try
    End Sub
End Class

Qualquer dúvida posta aí

A mente que se abre a uma nova idéia jamais voltará ao seu tamanho original. Albert Einstein

#340033 - 23/04/2010 12:37:59

ALEXANDREHKK
CAMPINAS
Cadast. em:Abril/2010


killer por favor, como devo declarar essa variavel dgv " dgv.DataSource = ds.Tables(0)" qual o tipo dela por gentileza,

outra dúvida, eu poderia fazer um if para verificar qual caixa de texto está preenchida e pesquisar correto? bastanto apenas repetir todo o código dentro de cada ELSE? obrigado





#340036 - 23/04/2010 12:58:08

ADHEL
PRAIA GRANDE
Cadast. em:Junho/2009


Alexandre

O exemplo que o Killer fez está perfeito
Esse dgv.Datasource=ds.tables(0) é

dgv= é o nome do datagrid , que no meu exemplo é dgvConsulta o nome do datagrid
.datasource é a fonte dados que é carregada pelo ds(dataset)
.tables( é a tabela) que você deseja que seja carregada
sobre o if ,se mais de uma caixa estiver com conteudo?existe realmente a necessdade de pesquisar as três??



#340039 - 23/04/2010 13:14:50

KILLER
JM
Cadast. em:Março/2010


 Anexos estao visíveis somente para usuários registrados

olha a respeito do dgv o ADHEL já te respondeu perfeitamente,

sobre as caixas, te aconselho a colocar 3 radiobuttons o usuario selecionaria por qual caixa de texto o sistema deve pesquisar,
se selecionar o primeiro ele deve desbloquer a caixa de texto txtlogin limpar e bloquear as demais

como no exemplo que estou anexando

A mente que se abre a uma nova idéia jamais voltará ao seu tamanho original. Albert Einstein

#340052 - 23/04/2010 14:40:09

ALEXANDREHKK
CAMPINAS
Cadast. em:Abril/2010


muito obrigado, deu certo pessoal :D




 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por ALEXANDREHKK em 23/04/2010 14:40:45