BUSCAR ATRAVES DO TEXTBOX E EXIBIR NO GRID
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
[ô]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
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.
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.
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)
outra coisa, não vi se vc colocou sua grid para receber o dataset
dgv.DataSource = ds.Tables(0)
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
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
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Ã
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Ã
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
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
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??
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??
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
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
muito obrigado, deu certo pessoal :D
Tópico encerrado , respostas não são mais permitidas