Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

bertani

[Resolvido] Pesquisa

Recommended Posts

Pessoal,

estou precisando de uma ajuda no processo de pesquisa.

Tenho um form onde possui 4 campos e uma grid. Gostaria que ao preencher algum campo, aparecesse o resultado na grid.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou te dar um exemplo do que uso.

 

Tenho um formulário com 4 campos. Código, Descrição, Referência, Valor. Sempre que eu clico em ADICIONAR, os valores vão para o grid e são salvos em determinada tabela do banco de dados.

 

Eis meu código do evento click do botão ADICIONAR:

    Private Sub btn_AddReceitas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_AddReceitas.Click
       If txt_Valor.Text = "" Then
           MessageBox.Show("O campo 'Valor' é obrigatório!", "Falha na inclusão", MessageBoxButtons.OK, MessageBoxIcon.Warning)
       ElseIf txt_Referencia.Text = "  /" Then
           MessageBox.Show("O campo 'Referência' é obrigatório!", "Falha na inclusão", MessageBoxButtons.OK, MessageBoxIcon.Warning)
       Else
           'Aqui estou incluindo os valores ao banco de dados'
           dao.IncluirReceita(txt_Referencia.Text, cbb_Descricao.Text, txt_Valor.Text)
           'Aqui estou incluindo os valores do formulário na grid'
           dao.PreencherGrid(dgv_Receitas, txt_Codigo.Text, cbb_Descricao.Text, txt_Valor.Text, txt_Referencia.Text)
           LimparCampos()
       End If
   End Sub

 

E abaixo segue o que minha sub PreencherGrid está fazendo:

    Public Sub PreencherGrid(ByRef dataGrid As DataGridView, ByVal pnCod As Integer, ByVal pcDescr As String, ByVal pnVlrUni As Double, ByVal pcRef As String)
       Dim valores() As String = {CStr(pnCod), pcDescr, CStr(pnVlrUni), pcRef}
       dataGrid.Rows.Add(valores)
   End Sub

 

Se você quer adicionar valor por valor, terá que fazer algumas adaptações, mas a lógica é basicamente a mesma. Espero ter ajudado.

 

Qualquer dúvida, avise que tentarei te ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Joffre,

acho que coloquei a minha dúvida de forma errada, me desculpe. Porque é o seguinte, incluir na grid eu consegui, o que eu preciso é que no Form ao pesquisar por um campo, tipo NOME DA FILIAL, ao executar a filial que preciso apareça na grid entendeu?.

Os dados que inseri na grid, possam ser pesquidos tb.

 

Obrigado pela atenção

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você quer dar tipo um duplo click no grid e com isso fazer com que os campos do formulário correspondentes sejam preenchidos? Se for, não tem segredo também.

 

Antes de mais nada, você precisa criar uma Sub que fará a consulta no banco de dados para retornar os valores para preenchimento do formulário. Note que por parâmetro passaremos o código:

    Public Function ConsultaRec(ByVal pnCodigo As Int32) As DataSet
       Dim ds As New DataSet
       Try
           Dim str As String
           str = " SELECT * FROM receitas WHERE codigo=" & pnCodigo
           ds = bd.PreencheDataSet(str)
       Catch ex As Exception
           MsgBox(ex.ToString)
       End Try
       Return ds
   End Function

 

Depois você vai criar uma Sub chamada PreencheForm (ou MontarTela), que irá preencher os campos do formulário de acordo com o resultado da consulta acima:

    Private Sub PreencheForm(ByVal pnCodigo As Integer)
       Try
           Dim ds As New DataSet
           ds = dao.ConsultaRec(pnCodigo)
           If ds.Tables(0).Rows.Count > 0 Then
               txt_Codigo.Text = pnCodigo
               cbb_Descricao.Text = ds.Tables(0).Rows(0)("descricao")
               txt_Valor.Text = ds.Tables(0).Rows(0)("vlr_Receita")
               txt_Referencia.Text = ds.Tables(0).Rows(0)("ref")
           End If
       Catch ex As Exception
           MsgBox(ex.Message)
       End Try
   End Sub

 

Depois disso, adicione o seguinte evento ao DataGridView:

Private Sub dgv_Receitas_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles dgv_Receitas.DoubleClick
       Try
           PreencheForm(dgv_Receitas.Item("codigo", dgv_Receitas.CurrentCell.RowIndex).Value)
       Catch ex As Exception
           MsgBox(ex.Message)
       End Try
   End Sub

 

Com isso, ao dar duplo click em qualquer elemento do grid, as linhas do mesmo preencherão o formulário.

 

Obs.: estou pegando como base a mesma tabela informada no meu post anterior (com 4 campos). Se ainda não for isso, me avise que tentarei te ajudar no que for possível.

 

 

Se ainda não for essa sua dúvida, desenha aí pra mim pois não entendi! Hahahaha

Compartilhar este post


Link para o post
Compartilhar em outros sites

Joffre,

não seria esta minha dúvida, mas achei muito interessante este procedimento que passou e irei implementar na minha aplicação rsss. Como sou iniciante, é uma coisa nova pra mim.

 

Mas vou desenhar o que preciso rs.

 

No meu Form tenho 4 campos(TextBox):(Filial, Código do Produto,Descrição Produto e Tipo de Movimento). um botao executar que serve para pesquisar e atualizar os dados que constam na grid. Vou informar como e feito a inclusao.

 

Abaixo da grid tenho o botão incluir, nele ao clicar, aparece uma telinha para cadastrar os campos solicitados. Ao incluir, ele aparece na grid e assim por diante, fora o botao alterar e cancelar.

 

Então é o seguinte, eu preciso que no meu form eu consiga pesquisar utilizando um dos 4 campos que informei e que a resposta apareça na grid. Tipo, Filial 900002, apareça na grid somente a filial informada na pesquisa. Isso usando o botao executar blza?

 

Mais uma vez, obrigado pela atenção

E vou usar o exemplo que passou rs..

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites
No meu Form tenho 4 campos(TextBox):(Filial, Código do Produto,Descrição Produto e Tipo de Movimento). um botao executar que serve para pesquisar e atualizar os dados que constam na grid. Vou informar como e feito a inclusao.

 

Abaixo da grid tenho o botão incluir, nele ao clicar, aparece uma telinha para cadastrar os campos solicitados. Ao incluir, ele aparece na grid e assim por diante, fora o botao alterar e cancelar.

 

Então é o seguinte, eu preciso que no meu form eu consiga pesquisar utilizando um dos 4 campos que informei e que a resposta apareça na grid. Tipo, Filial 900002, apareça na grid somente a filial informada na pesquisa. Isso usando o botao executar blza?

 

Se a idéia for cadastrar no Formulário 2 para consultar no Formulário 1 através dos TextBox + botão Executar, a lógica é a mesma do que postei pra você anteriormente. Mas se quiser, apenas confirma se é isso mesmo que implementarei pra você.

 

Eis minha dúvida: Quando você clica no botão INCLUIR abaixo do grid, aparece uma telinha para você cadastrar os 4 campos OU apenas um dos 4 campos?

 

Se possível, tira um print dos dois formulários e manda pro meu e-mail, tá? (vou passar ele para você por mensagem privada)

Compartilhar este post


Link para o post
Compartilhar em outros sites
No meu Form tenho 4 campos(TextBox):(Filial' date=' Código do Produto,Descrição Produto e Tipo de Movimento). um botao executar que serve para pesquisar e atualizar os dados que constam na grid. Vou informar como e feito a inclusao.

 

Abaixo da grid tenho o botão incluir, nele ao clicar, aparece uma telinha para cadastrar os campos solicitados. Ao incluir, ele aparece na grid e assim por diante, fora o botao alterar e cancelar.

 

Então é o seguinte, eu preciso que no meu form eu consiga pesquisar utilizando um dos 4 campos que informei e que a resposta apareça na grid. Tipo, Filial 900002, apareça na grid somente a filial informada na pesquisa. Isso usando o botao executar blza?

[/quote']

 

Se a idéia for cadastrar no Formulário 2 para consultar no Formulário 1 através dos TextBox + botão Executar, a lógica é a mesma do que postei pra você anteriormente. Mas se quiser, apenas confirma se é isso mesmo que implementarei pra você.

 

Eis minha dúvida: Quando você clica no botão INCLUIR abaixo do grid, aparece uma telinha para você cadastrar os 4 campos OU apenas um dos 4 campos?

 

Se possível, tira um print dos dois formulários e manda pro meu e-mail, tá? (vou passar ele para você por mensagem privada)

 

Mandei o print pra você.

Vou aceitar sua ajuda sim.

 

Valeu demais

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mandei o print pra você.

Vou aceitar sua ajuda sim.

 

Valeu demais

 

A idéia é aquilo que falei mesmo?

 

Se a idéia for cadastrar no Formulário 2 para consultar no Formulário 1 através dos TextBox + botão Executar, a lógica é a mesma do que postei pra você anteriormente. Mas se quiser, apenas confirma se é isso mesmo que implementarei pra você.

 

No horário de almoço olho as screens.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você já estiver conseguindo incluir os dados no banco de dados, a parte da consulta é fácil. Olha o evento CONSULTAR abaixo como exemplo. Ele vai preencher uma grid, acho que é basicamente o que você está querendo. A diferença é que sua passagem de parâmetros é por TextBox ao invés de RadioButton. Uma idéia que você pode usar é ao invés de utilizar 4 TextBox usar apenas UM no qual você vai digitar o que quer procurar, e, através de um ComboBox você selecionar qual dos itens você quer encontrar. Acho que ficaria mais limpo o formulário. Se fizer alterações nos Forms, me envie novamente.

 

Private Sub btn_Consultar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Consultar.Click
Dim str As String = ""

If rdb_EPI.Checked Then
	str = " SELECT descricao, qtd, dt_validade FROM materiais WHERE tipo='EP' ORDER BY descricao "
ElseIf rdb_Venenos.Checked Then
	str = " SELECT descricao, qtd, dt_validade FROM materiais WHERE tipo='VE' ORDER BY descricao "
ElseIf rdb_Utilitarios.Checked Then
	str = " SELECT descricao, qtd, dt_validade FROM materiais WHERE tipo='UT' ORDER BY descricao "
End If

ds = bd.CarregarGrid(str, "materiais")
dgv_Resultado.DataSource = ds.Tables("materiais").DefaultView
dgv_Resultado.Columns(0).HeaderText = "DESCRIÇÃO"
dgv_Resultado.Columns(1).HeaderText = "QUANTIDADE"
dgv_Resultado.Columns(2).HeaderText = "VALIDADE"
End Sub

 

E o aqui está a Função CarregarGrid:

    Public Function CarregarGrid(ByVal comandoSql As String, ByVal tabela As String) As DataSet
       Try
           Conectar()
           Dim SQL As String = comandoSql
           Dim da As Npgsql.NpgsqlDataAdapter = New NpgsqlDataAdapter(SQL, conn)
           Dim ds As DataSet = New DataSet()
           da.Fill(ds, tabela)
           Return (ds)
       Catch ex As Exception
           MessageBox.Show(ex.Message, "Erro durante pesquisa!", MessageBoxButtons.OK, MessageBoxIcon.Error)
           Return Nothing
       Finally
           If Not conn Is Nothing Then
               If conn.State = ConnectionState.Open Then
                   conn.Close()
               End If
           End If
       End Try
   End Function

 

Se isso servir de base para você desenvolver, bom. Caso contrário, me avise que tentarei ser mais claro ainda! (provavelmente utilizando seus formulários) ;D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você já estiver conseguindo incluir os dados no banco de dados, a parte da consulta é fácil. Olha o evento CONSULTAR abaixo como exemplo. Ele vai preencher uma grid, acho que é basicamente o que você está querendo. A diferença é que sua passagem de parâmetros é por TextBox ao invés de RadioButton. Uma idéia que você pode usar é ao invés de utilizar 4 TextBox usar apenas UM no qual você vai digitar o que quer procurar, e, através de um ComboBox você selecionar qual dos itens você quer encontrar. Acho que ficaria mais limpo o formulário. Se fizer alterações nos Forms, me envie novamente.

 

Private Sub btn_Consultar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Consultar.Click
Dim str As String = ""

If rdb_EPI.Checked Then
	str = " SELECT descricao, qtd, dt_validade FROM materiais WHERE tipo='EP' ORDER BY descricao "
ElseIf rdb_Venenos.Checked Then
	str = " SELECT descricao, qtd, dt_validade FROM materiais WHERE tipo='VE' ORDER BY descricao "
ElseIf rdb_Utilitarios.Checked Then
	str = " SELECT descricao, qtd, dt_validade FROM materiais WHERE tipo='UT' ORDER BY descricao "
End If

ds = bd.CarregarGrid(str, "materiais")
dgv_Resultado.DataSource = ds.Tables("materiais").DefaultView
dgv_Resultado.Columns(0).HeaderText = "DESCRIÇÃO"
dgv_Resultado.Columns(1).HeaderText = "QUANTIDADE"
dgv_Resultado.Columns(2).HeaderText = "VALIDADE"
End Sub

 

E o aqui está a Função CarregarGrid:

    Public Function CarregarGrid(ByVal comandoSql As String, ByVal tabela As String) As DataSet
       Try
           Conectar()
           Dim SQL As String = comandoSql
           Dim da As Npgsql.NpgsqlDataAdapter = New NpgsqlDataAdapter(SQL, conn)
           Dim ds As DataSet = New DataSet()
           da.Fill(ds, tabela)
           Return (ds)
       Catch ex As Exception
           MessageBox.Show(ex.Message, "Erro durante pesquisa!", MessageBoxButtons.OK, MessageBoxIcon.Error)
           Return Nothing
       Finally
           If Not conn Is Nothing Then
               If conn.State = ConnectionState.Open Then
                   conn.Close()
               End If
           End If
       End Try
   End Function

 

Se isso servir de base para você desenvolver, bom. Caso contrário, me avise que tentarei ser mais claro ainda! (provavelmente utilizando seus formulários) ;D

 

Beleza Joffre,vou fazer aqui e te dou uma resposta.

Valeu demais

Compartilhar este post


Link para o post
Compartilhar em outros sites
Beleza Joffre,vou fazer aqui e te dou uma resposta.

Valeu demais

 

Espero que dê certo.

 

Qualquer coisa não exite em chamar.

Ola Joffre,

desculpe a demora ai para responder, tive um probleminha particular e fiquei sem usar a net estes dias.

Cara funcionou direitinho, só precisei converter para C#.

 

Muito obrigado pele atenção.

Valeu demais

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites
Ola Joffre,

desculpe a demora ai para responder, tive um probleminha particular e fiquei sem usar a net estes dias.

Cara funcionou direitinho, só precisei converter para C#.

 

Muito obrigado pele atenção.

Valeu demais

 

Abraço

 

Às ordens.

 

Qualquer coisa é só avisar! ;D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.