BUSCAR ATRAVES DO TEXTBOX E EXIBIR NO GRID

ALEXANDREHKK 19/04/2010 09:29:13
#339699
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
ADHEL 19/04/2010 17:56:38
#339739
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.

KILLER 20/04/2010 08:28:47
#339759
Resposta escolhida
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)
ALEXANDREHKK 22/04/2010 10:02:39
#339913
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
KILLER 22/04/2010 15:52:10
#339959
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í
ALEXANDREHKK 23/04/2010 12:37:59
#340033
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

ADHEL 23/04/2010 12:58:08
#340036
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??
KILLER 23/04/2010 13:14:50
#340039
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
ALEXANDREHKK 23/04/2010 14:40:09
#340052
muito obrigado, deu certo pessoal :D
Tópico encerrado , respostas não são mais permitidas