USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  LOOP e TREEVIEW
Maha
SÃO PAULO
SP - BRASIL
Postada em 08/07/2006 00:51 hs            
Olá,
 
Estou com um problema e preciso de ajuda..
Tenho um cadastro de produtos que são compostos por peças individuais e conjuntos. Os conjuntos são compostos por várias peças e as vezes por outros conjuntos.
Então temos produtos com várias peças individuais e conjuntos como um MOTOR DE CARRO - o produto é o motor mas que é composto por peças e conjuntos de peças.
Todos os itens cadastrados na mesma tabela que tem uma coluna do tipo "sim/não" os itens assinalados com "sim" são conjuntos.
Quero fazer uma listagem usando o treeview da seguinte maneira.
Quando o usuário escolher um produto será listado o produto e todos os seus itens, o problema é que tem produtos com 5 conjuntos. Como faço isso funcionar direito?
 
Ex: MOTOR
     + comando de valvulas
     + Carburador
     - bomba de gasolina
         -> tampa
         -> sensor
         - boia
              -> martelo
              -> pino
 
Alguém tem um código fonte para eu estudar ou pode ajudar a como fazer.
 
Desde já agradeço,
 
Maha

Saúde e Paz, o resto... trabalhando vem!!!

"Se um dia a vida lhe der as costas, passe a mão na bunda dela!!!"

     
Maha
SÃO PAULO
SP - BRASIL
Postada em 08/07/2006 01:14 hs            
Esqueci de comentar mas tem uma outra tabela (ESTRUTURA) com a estrutura do produto ("motor") ou seja diz quais são os itens que pertecem ao produto.
com essas colunas
id_p - é o id do produto
no_p - nome do produto
id_i - onde o id_item é a chave na tabela PRODUTOS.
 
Quando o usuário escolher o produto é feita a varredura na tabela PRODUTOS e se o item for assinalado com "sim" é feita a varredura de todos os itens do produto na tabela ESTRUTURA.

Saúde e Paz, o resto... trabalhando vem!!!

"Se um dia a vida lhe der as costas, passe a mão na bunda dela!!!"

     
Sandro
não registrado
Postada em 08/07/2006 11:19 hs   
Olá,
 
Você disse que quer fazer uma listagem, mas está querendo usar uma treeview, então eu imagino que o que você chama de listagem é apenas uma tela mostrando a relação entre os componentes e o produto principal, certo? Bom, nesse caso, a melhor forma de fazer o que você quer é usar a recursão, que nada mais é do que uma procedure (ou function) chamar a si própria. Seria algo mais ou menos assim:
 
Dim No as MsComctlLib.Node
 
Set No = TreeView1.Nodes.Add(,,Tabela!Id_P, Tabela!No_P)
 
If TemEstrutura Then
      Carrega_Estrutura No, Tabela!Id_P, ""
End if
 
 
..........
 
Private Sub Carrega_Estrutura(NoPai as MsComCtlLib.Node, CodProd)
 
    Dim No as MsComCtlLib.Node
    Dim Sql as String
    Dim RS as ADODB.Recordset
 
    Sql="Select Estrutura.*,  Produto.TemEstrutura From Estrutura inner Join Produto on Estrutura.Id_I = Produto.ID_P Where Estrutura.Id_P = " & CodProd 
    Rs.Open Sql, Conexao, adOpenKeyset
 
    Do While Not RS.Eof
        Set No = TreeView.Nodes.Add(NoPai.Key,tvwChild,"E" & RS!Id_I, RS!No_P)
        No.EnsureVisible
 
        If RS!TemEstrutura Then
             Carrega_Estrutura No, RS!No_I
        End If
 
        RS.MoveNext
    Loop
 
   RS.close
   Set No=Nothing
   Set RS = Nothing 
End Sub
 
Bom, é mais ou menos isso aí. É claro que eu não testei, mas a idéia básica é essa. Desta forma, o programa irá executar a procedure Carrega_Estrutura até que todos o s itens que compões o produto estejam na TreeView. Talvez você tenha que adaptar a parte que cria o novo nó na TreeView, pois em caso de um mesmo produto poder estar em duois lugares diferentes na hierarquia, vocÊ recebeá a mensagem de que a chave não é exclusiva dentro da coleção, nesse caso, você terá que inventar um jeito de criar chaves exclusivas para cada item da TreeView.
Espero ter ajudado.
 
um abraço,
Sandro.
     
Maha
SÃO PAULO
SP - BRASIL
Postada em 08/07/2006 15:32 hs            
Olá sandro,
 
Muito obrigado pela ajuda quando disse listar entenda-se mostrar.
Vou ver como se comporta o código, na verdade andei vendo como faria isso e não tinha a menor ideia.
Abraços,

Saúde e Paz, o resto... trabalhando vem!!!

"Se um dia a vida lhe der as costas, passe a mão na bunda dela!!!"

     
Página(s): 1/1    

CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página