Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

lusky

[Resolvido] Ajuda | Segundo Filtro em ListView

Mensagens Recomendadas

lusky

Boa noite,

Estou a desenvolver uma pequena aplicação de gestão financeira que está quase pronta mas para obter cálculos de crédito/ débito correctos preciso de acrescentar mais um filtro à ListView após o primeiro ter sido carregado, isto é:

Abro a aplicação e a ListView carrega todos os registos da tabela access, neste momento consigo filtrar o nome da pessoa e carrega todos os registos relativo a esse mesmo nome, mas preciso de seguida filtrar o movimento se crédito ou débito desse nome.

No meu primeiro filtro tenho uma ComboBox (com os títulos das colunas da LV) e uma TextBox com o texto a buscar, o código é o seguinte:

Try
Dim SQL As String = "select * from BDados"

Dim where As String = ""

If Not txtBuscar.Text = "" Then
If cbFiltro.Text = "Nome" Then
where = " where Nome like '%" & txtBuscar.Text & "%'"
End If
End If

Preciso filtrar novamente através da ComboBox2 o movimento do nome já filtrado, isto é possível?

Qualquer ajuda ou dica será bem vinda!

Cumprimentos,

Editado por apocsantos
geshi (code=vbnet)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
apocsantos

Boa noite,

Assim de repente, creio que seja possível iterando os items da listview e retornando apenas os items que comparados com o valor de procura façam match.

O mais correcto creio que seria usar linq.

Cordiais cumprimentos,

Apocsantos

  • Voto 1

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

assinatura.jpg

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
lusky

Boa noite,

Sim Apocsantos já alterei a ordem dos items da listview para conseguir esse tal match, mas por mais que tente reformular a ordem da escrita na BD para facilitar a pesquisa/ filtro não consigo lá chegar......

O meu conhecimento vb.net não é muito alargado, de que forma poderia usar linq, algum exemplo para ter uma pequena idéia?

Agradecendo toda e qualquer ajuda.

Cumprimentos,

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Cerzedelo

Quando registada na base de dados a operação deve ter um campo onde refere se a mesma e crédito ou débito. Então na consulta sql à base de dados só tem de fazer um select com a seguinte condição onde o nome seja o listado na primeira combobox e se é um crédito ou débito, com o que escolher na segunda combobox.

select montante from  operacoes where nome=combobox1.text AND tipo=combobox2.text

  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
lusky

Olá Cerzedelo,

O teu código parece-me ser bem aquilo que preciso mas a minha sinceridade permite-me dizer que não consigo aplicá-lo....

Analisando o meu código consegues dar-me uma ajuda, não sei se a imagem vai aparecer abaixo mas é a ListView onde consigo filtrar a coluna Nome e de seguida precisava filtrar a coluna Movimento (se crédito ou débito):

Private Sub MontaLista()
			Try
		Dim SQL As String = "select * from BDados"
		Dim where As String = ""
			If Not txtBuscar.Text = "" Then
			If cbFiltro.Text = "Nome" Then
			where = " where Nome like '%" & txtBuscar.Text & "%'"
		   End If
		End If
		SQL += where
		ds.Reset()		  
		Dim adptr As New OleDbDataAdapter(SQL, conect_banco)

		adptr.Fill(ds)
		dt = ds.Tables(0)

		LV1.Items.Clear()
		Dim Item As ListViewItem
		For Each Me.dr In dt.Rows
			Item = LV1.Items.Add(dr.Item("ID"))
			Item.SubItems.Add(dr.Item("Nome"))
			Item.SubItems.Add(dr.Item("Movimento"))
			Item.SubItems.Add(dr.Item("Destino"))
			Item.SubItems.Add(dr.Item("ValorPago"))
			Item.SubItems.Add(dr.Item("ValorPedido"))
			Item.SubItems.Add(dr.Item("Data"))
		Next
	Catch ex As Exception
		MsgBox("Erro: " & ex.Message)
	End Try
	Somatotal()
End Sub

 

Cumprimentos,

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Cerzedelo

Desde já não consigo ver a imagem. Mas se pretende selecionar o nome e simultaneamente o movimento deve alterar o código para

where = " where Nome like '%" & txtBuscar.Text & "%' AND movimento=combobox1.Text "

O combobox1 e um controlo do tipo combobox que poderá popular com crédito e débito. Onde depois poderá escolher um deles. Poderá utilizar qualquer outro controlo tal como uma Textbox , só que ai terá de escrever crédito ou débito. Verifique as aspas e plicas dentro do sql que não sei se estão corretas.

Se pretende primeiro selecionar o nome na listview e depois filtrar o movimento, o procedimento do sql é semelhante, só que deve acionar o método Listview_SelectedIndexChange, ver https://msdn.microsoft.com/en-us/library/system.windows.forms.listview.selecteditems(v=vs.110).aspx, ver mais para o final, pois o objetivo e retirar o nome para depois no sql, ao listar os dados na condição where pode colocar nome=variável que contem o nome AND movimento=crédito.

Uma nota, se utilizar a datagridview para apresentar os dados, terá provavelmente uma maior funcionalidade.

Como ainda e um iniciado em vb.net aconselho a visitar o site http://www.macoratti.net/Default.aspx, onde tem muitos tutoriais e exemplos.

  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
lusky

Olá Cerzedelo,

Era precisamente esse código que necessitava, para além de me ajudares a resolver este problema, o link que anexaste deu-me muito jeito para entender melhor estas funcões, a partir daqui já posso inventar mais um pouco.

O código ficou assim com poucas alterações:

where = " where Nome like '%" & txtBuscar.Text & "%' AND Movimento like '%" & cbFiltro2.Text & "%'"

Muito obrigado pelo teu tempo Cerzedelo!

Cumprimentos,

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.