Jump to content
ricduarte

pesquisa e datagrid

Recommended Posts

ricduarte

boas!

tenho mais um problema. tou a fazer um projeto de final de curso e queria fazer uma coisa mas nao tou a conseguri safar-me. o que queria fazer é o seguinte:

tenho uma datagridview e uma caixa de pesquisa e eu queria que ao pesquisar por um só nome, me aparecessem todos os resultados que tenham esse nome. por exemplo, pesquisavba por Manuel e queria que me aparecessem todos os nomes que tenham Manuel.

será que me podem ajudar??

Share this post


Link to post
Share on other sites
NunoDinis

O que queres é, que à medida que digitas o filtro vá sendo executado ?


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
Share on other sites
ricduarte

o que quero é: escrevo o nome na textbox, de seguida clico no botao para pesquisar e depois de clicar no botao queria que me aparecessem os vários resultados com o nome com que a pesquisa foi feita

Share this post


Link to post
Share on other sites
NunoDinis

Está bom. Já tens algum código ?


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
Share on other sites
ricduarte

o código que tenho é pa pesquisar um so valor

Dim query As String = "SELECT * FROM Clientes WHERE Nome = @Nome"

Dim command As New OleDbCommand(query, ConnectionString)

command.Parameters.Add("@Nome", OleDbType.Char).Value = pesquisanome.Text

Dim DataAdapter As New OleDbDataAdapter(command)

Dim MyData As New DataSet

DataAdapter.Fill(MyData, "Clientes")

ConnectionString.Open()

Dim dr As OleDbDataReader = command.ExecuteReader(CommandBehavior.SingleRow)

If pesquisanome.Text = "" Then

MsgBox("Nenhum nome foi inserido!", vbExclamation, "Erro!")

GoTo Loop_Strat

End If

If dr.HasRows Then

dr.Read()

idtb.Text = dr.Item(0).ToString

nometb.Text = dr.Item(1).ToString

moradatb.Text = dr.Item(2).ToString

cptb.Text = dr.Item(3).ToString

localidadetb.Text = dr.Item(4).ToString

telefonetb.Text = dr.Item(5).ToString

telemoveltb.Text = dr.Item(6).ToString

contribuintetb.Text = dr.Item(7).ToString

Me.tabela.DataSource = MyData.Tables("Clientes")

Else

Dim testMsg As Integer

testMsg = MsgBox("Registo não encontrado!", vbExclamation, "Erro!")

End If

ConnectionString.Close()

command = Nothing

Loop_Strat:

Share this post


Link to post
Share on other sites
ricduarte

ah so mais uma coisinha, esqueci-me de dizer que a base de dados é em access

Share this post


Link to post
Share on other sites
NunoDinis
"SELECT * FROM Clientes WHERE Nome = Like '%" & pesquisanome.Text & "%'"


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
Share on other sites
ricduarte

boas!

NunoDinis ja experimentei alterar o meu codigo por aquele que me deste mas mesmo assim deu erro. ja nao sei o que fazer

Edited by ricduarte

Share this post


Link to post
Share on other sites
ricduarte

quando faço a pesquisa, ja com o codigo colocado, o VB dá-me um erro a dizer que a OleDbException não foi manipulada. alguem sabe o que fazer? nao tenho conseguido encontrar nada em outros foruns na net

Share this post


Link to post
Share on other sites
NunoDinis

Coloca o código que tens aqui, com as tags direitinhas, senão é muito complicado para interpretarmos o código.


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
Share on other sites
ricduarte
Private Sub pesquisa_Click(sender As Object, e As EventArgs) Handles pesquisa.Click
Dim ConnectionString As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\Ricardo\Desktop\Agrigest\Agrigest.accdb")
Dim query As String = "SELECT * FROM Clientes WHERE Nome = LIKE '%" & pesquisanome.text & "%'"
Dim command As New OleDbCommand(query, ConnectionString)
command.Parameters.Add("@Nome", OleDbType.Char).Value = pesquisanome.Text
Dim DataAdapter As New OleDbDataAdapter(command)
Dim MyData As New DataSet
DataAdapter.Fill(MyData, "Clientes")

ConnectionString.Open()
Dim dr As OleDbDataReader = command.ExecuteReader(CommandBehavior.SingleRow)
If pesquisanome.Text = "" Then
 MsgBox("Nenhum nome foi inserido!", vbExclamation, "Erro!")
 GoTo Loop_Strat
End If
ConnectionString.Close()
command = Nothing
Loop_Strat:

Share this post


Link to post
Share on other sites
Tiago Simões Marques

Private Sub pesquisa_Click(sender As Object, e As EventArgs) Handles pesquisa.Click
Dim ConnectionString As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\Ricardo\Desktop\Agrigest\Agrigest.accdb")
Dim query As String = "SELECT * FROM Clientes WHERE Nome = LIKE '%" & pesquisanome.text & "%'"
Dim command As New OleDbCommand(query, ConnectionString)
command.Parameters.Add("@Nome", OleDbType.Char).Value = pesquisanome.Text
Dim DataAdapter As New OleDbDataAdapter(command)
Dim MyData As New DataSet
DataAdapter.Fill(MyData, "Clientes")

ConnectionString.Open()
Dim dr As OleDbDataReader = command.ExecuteReader(CommandBehavior.SingleRow)
If pesquisanome.Text = "" Then
 MsgBox("Nenhum nome foi inserido!", vbExclamation, "Erro!")
 GoTo Loop_Strat
End If
ConnectionString.Close()
command = Nothing
Loop_Strat:

Acho que não é preciso tanta coisa, a uma linha de código que te filtra directo no datagridview. Se quiseres tenho para aqui algures.


Tiago Simões Marques

Share this post


Link to post
Share on other sites
bioshock

A tua query está mal..estás-lhe a dizer (Nome = Like) e deve ser (Nome LIKE), entre outras coisas:

Dim ConnectionString As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\Ricardo\Desktop\Agrigest\Agrigest.accdb")
Dim query As String = "SELECT * FROM Clientes WHERE Nome LIKE '%@nome%'"
Dim command As New OleDbCommand(query, ConnectionString)
command.Parameters.Add("@nome", OleDbType.Char).Value = pesquisanome.Text
connection.Open()
Dim reader As SqlDataReader = command.ExecuteReader()
  While reader.Read
 MsgBox(reader(0).ToString())
  End While
connection.Close()

Share this post


Link to post
Share on other sites
ricduarte

Boas pessoal!

já tentei todas as soluções que foram propostas neste tópico mas infelizmente nenhuma delas funcionou. Já nao sei mais o que fazer!

Preciso URGENTEMENTE de ajuda!!!

Share this post


Link to post
Share on other sites
whize13

SELECT * FROM Clientes WHERE Nome   LIKE '%" & pesquisanome.text & "%'"

tenta assim, só tens uma tabela ?

Share this post


Link to post
Share on other sites
ricduarte

whize13 tentei con este código e simplesmente nao fez nada, nao deu erro, nao deu nada, é como se o botão nao tivesse código.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.