FILTRO EM TREEVIEW

CLEVERTON 15/03/2004 16:52:39
#15476
bem pessoal,

estou com uma duvida que estava me arrancando o couro cabeludo.

estou com um probleminha com o treeview.

eu sei mexer bem com o basico do basico do treeview
sei mapear com bd coisa e tal.

mas eu queria fazer o seguinte:

queira iserir 23 nós,
cada nó teria uma letra como segue abaixo

a-
b-
c

e assim sucessivamente

mas o problema é o seguinte,
como eu faço para quando eu clicar em letras diferente, o treeview,
fazer um filtro com o "select * from tabela where campotext like 'criterio*'

por exemplo, quando eu expandisse a letra (A), só aparecessem registro que comecem com
(A) com expandisse a letra (B) só mostrasse registros que comecem com (B) e assim
sucessivamente


quem puder me ajudar agradecerei muito

cleverton.on@pop.com.br
USUARIO.EXCLUIDOS 25/03/2004 21:58:21
#17080
Resposta escolhida
tentei fazer o que voce esta precisando uma vez...
depois de apanhar mto de uns "SendMessage" inuteis, decidi por limpar a cada mudanca...

vc cria uma rotina generica que cria os nodes raizes (no seu exemplo - um node para cada letra do alfabeto)
qdo receber o evento NodeClick - vc limpa todos os nodes - carrega os da raiz - depois faz a pesquisa que quiser e preenche esta letra com os dados de seu recordset...

entao sempre que clicar em um node raiz (e isto vc tem de analisar pelo key de seu node ou na hora de verificar o parent) vc limpa tudo e coloca soh o que interessa...

a principio achei q ficaria ruim e lento - mas no final parece mto bom e nao eh lento nao...
USUARIO.EXCLUIDOS 26/03/2004 10:14:03
#17133
a ideia eh mais ou menos assim...
tem de dar uma alterada no conn, rs, e sql - mas a ideia eh essa...
o que pode ficar lento eh que a cada click eu abro e fecho conexao com o banco de dados - mas o preenchimento do treeview eh relativamente rapido...

Option Explicit

Private Sub AddBasicNodes()
Dim N As Node
Dim i As Integer

TreeView1.Nodes.Clear
For i = 65 To 90
Set N = TreeView1.Nodes.Add(, , Chr(i), Chr(i))
N.Tag = "*"
Next i

End Sub

Private Sub AddExpanded(ByVal SQLString As String, ByVal Letter As String)
Dim N As Node
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset

Set conn = New ADODB.Connection
conn.ConnectionString = myconnstr
conn.Open

Set rs = New Recordset
rs.ActiveConnection = conn
rs.Open SQLString

Do While Not rs.EOF
Set N = TreeView1.Nodes.Add(Letter, tvwChild, , rs(Campo).Value)
rs.MoveNext
Loop

rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing

End Sub

Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
AddBasicNodes
AddExpanded "Select * from Banco where Nome like '" & Node.Text & "*';", Node.Text
End Sub

Tópico encerrado , respostas não são mais permitidas