MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


2 participantes

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    avatar
    krsantos
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 57
    Registrado : 04/01/2013

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  krsantos 8/8/2013, 16:15

    Olá estou quebrando a cabeça para fazer que uma treeview seja preenchida com os valores de uma uma consulta ou tabela.

    Estou tentando colocar no treeviwee

    Classe
    -------Fornecedor
    -----------------Desc
    ----------------------- nome arquivo, revisao, data modificação

    Mas não estou conseguindo criar os nós corretamente, valores repetidos devem aparecer agrupados.

    Tem como me ajudar.

    Estou colocando o projeto que estou trabalhando!


    .................................................................................
    Krsantos
    avatar
    Convidado
    Convidado


    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  Convidado 8/8/2013, 17:26

    Envie o modelo para BD para que possamos fazer.

    Cumprimentos.
    avatar
    krsantos
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 57
    Registrado : 04/01/2013

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Arquivo do projeto Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  krsantos 8/8/2013, 19:01

    Segue o banco de dados.

    Não consegui enviar pelo forum, segue o link para no 4shared.

    http://www.4shared.com/zip/fIVxvX9C/PreTreeView.html

    Neste arquivo, deixei apenas a tabela resultado e um form com um treeview.

    Tentei fazer mas não consegui.

    Se precisar pode mudar toda a programação.


    .................................................................................
    Krsantos
    avatar
    Convidado
    Convidado


    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  Convidado 8/8/2013, 21:23

    Quanta nós terá sua treeView?
    ou seja...

    1 - Nó
       2 - Nó
         3  - Nó

    Quantos terão? 2 ou tres?


    De uma descrição de:

    Tabela para o 1 - Nó
    Tabela para o 2 - Nó
    Tabela para o 3 - Nó

    São relacionada as tabelas?
    se sim.. quais os campos de relacionamenot?


    Cumprimentos.
    avatar
    krsantos
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 57
    Registrado : 04/01/2013

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Explicação do preenchimento do treeview.

    Mensagem  krsantos 9/8/2013, 13:26

    Olá amigo vamos lá,

    No arquivo que postei tem uma tabela chamada "Resultado" nela irá conter todos dados que preciso para mostrar agrupadamente no treeview que deverá ter 4 nós.

    Ou seja eu irei digitar em formulário um código ex: "20005" e uma uma consulta ira resultar exatamente os dados que coloquei na tabela resultado.

    1 Nó - campo Classe
    campo Fornecedor parente do campo classe
    campo Desc parente do campo fornecedor
    campos nome_arquivo, Revisão, dataModArquivo parente do desc

    No treeview deverá aparecer o seguinte:

    Produto
    -------CFA
    ------------DESENHO DE FABRICACAO CFA
    --------------------------------------------16005 - 01/06/2010
    ------------DESENHO DE FABRICACAO
    ------------------------------------MG861 fl 1-2.TIF - 01/06/10

    Desenvolvimento de Produto
    -------XXX
    ------------PROCESSO APROVADO.
    --------------------------------16005-GOL-APROVADO.pdf, A , 11/05/12
    --------------------------------16005-GOL-APROVADO.pdf, A , 03/10/12

    Quando todos os nós estiverem fechados deverá aparecer apenas:
    Produto
    Desenvolvimento de produto.

    Conforme for clicando nos nós ai sim deverá me mostrar os parentes, conforme descrevi acima, ou seja todas as informações estão na tabela "Resultado".

    Agradeço pela sua ajuda.


    .................................................................................
    Krsantos
    avatar
    Convidado
    Convidado


    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  Convidado 11/8/2013, 02:39

    Sinceramente amigão eu creio que isto deveria ser feito utilizando tabelas relacionadas..

    Mas verei se consigo algo.

    Cumprimentos.
    avatar
    Convidado
    Convidado


    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  Convidado 11/8/2013, 05:51

    Como eu havia dito...


    "O mais complicado não foi adicionar os registros à treeView e sim como fazer isto utilizando apenas uma tabela"


    Para isso tive que criar 4 consultas...Obserce:

    1 - Cada consulta atentamente e veja quais campos inclui em cada uma
    2 - Como relacionei as consultas.

    Está feito a treeView para 3 nós..Tente fazer o último Nó seguindo a lógica dos 3 primeiros.

    >>> Este exemplo de TreeView tem várias funcionalidades como
    . Pesquisa dentro da tree
    . Comandos como Click e Duplo Clik
    entre outros..

    Estas facilidades estão configurados para o exemplo do meu BD, não o modifiquei para o teu caso.
    Com uma boa observação pode aplicar as mesmas caso desejar... o código está bem explicado.

    O Código está funcional até na linha 149 do VBA no módulo do formulário ou seja...
    Até o final da sub:
    '================================================================================================================
    'Funções para treeView
    '================================================================================================================
    '----------------------
    Private Sub TreeInit()
    '----------------------



    https://dl.dropboxusercontent.com/u/26441349/KrSantos_TreeView.rar

    Isso me rendeu algumas horas de exercício mental... e isso sempre é bom para aumentar o conhecimento


    Bom Estudo...
    avatar
    krsantos
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 57
    Registrado : 04/01/2013

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Estudo da lógica.

    Mensagem  krsantos 12/8/2013, 12:14

    Olá tudo bem!

    Nossa que loucura!!!
    O código ficou gigante, rsss.
    Vou estudar sua lógica e depois informo se consegui implementar no meu sistema!

    Ficou muito bem elaborada.

    Vou estuda-la depois posto o feedback.

    obrigado!


    .................................................................................
    Krsantos
    avatar
    Convidado
    Convidado


    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  Convidado 12/8/2013, 17:54

    Aguardamos...

    Bom trabalho.
    avatar
    krsantos
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 57
    Registrado : 04/01/2013

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Dúvidas no treeview.

    Mensagem  krsantos 19/8/2013, 13:13

    Olá amigo tudo bem!

    Estudei seu código e achei super bem bolado, parabêns.

    Vamos as dúvidas, estudei e tentei implementar, porém aconteceram alguns e erros e preciso sua ajuda para arrumar.

    O código não está criando todos os nós, no meio da execução da rotina ele esta achando chave duplicada e para.

    Eu criei um formulário TreeView e coloquei o botão Preencher e no código eu fiz o seguinte:
    1. Removi o nó Produto, para iniciar à partir do o nó classe. (Porém esta dando um erro de chave, e não consegui resolver.)

    2. Preciso mais um nível depois da descrição, com o nome do arquivo, revisão e tipo (Não conseguei acho que é porque não funcionou o código para preencher completamente o treviwe, então retirei.) No final eu desejo clicar no item deverá me abrir o arquivo que está no servidor.

    Estou colocando o arquivo para você dar uma olhada.

    Você havia me dito seria melhor fazer com tabelas, então neste arquivos está as tabelas de onde estão os cadastros.

    Obrigado!
    Anexos
    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. AttachmentTreeView SinP-Forum.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (69 Kb) Baixado 137 vez(es)


    .................................................................................
    Krsantos
    avatar
    Convidado
    Convidado


    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  Convidado 19/8/2013, 14:50

    Sim.. tabelas... porém tabelas relacionadas... uma para cada nível.


    Segundo o exemplo que te enviei... cite novamente baseado nele, o que deseja que seja exibido?


    Cumprimentos.
    avatar
    krsantos
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 57
    Registrado : 04/01/2013

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  krsantos 19/8/2013, 15:28

    Vamos lá, no seu exemplo o treeview começava a ser preenchido pelo nó produto, eu fiz a modificação para começar com os nó classe, somente isso.

    Porém depois desta modificação a rotina consegue preencher apenas o primeiro nó, quando passa para fazer o segundo ela da um erro de duplicidade de chave.

    Eu preciso que apareça as seguintes informações no treeview

    1 Nó - campo Classe
    campo Fornecedor parente do campo classe
    campo Desc parente do campo fornecedor
    campos nome_arquivo, Revisão, dataModArquivo parente do desc

    No treeview deverá aparecer o seguinte:

    Produto
    -------CFA
    ------------DESENHO DE FABRICACAO CFA
    --------------------------------------------16005 - 01/06/2010
    ------------DESENHO DE FABRICACAO
    ------------------------------------MG861 fl 1-2.TIF - 01/06/10

    Desenvolvimento de Produto
    -------XXX
    ------------PROCESSO APROVADO.
    --------------------------------16005-GOL-APROVADO.pdf, A , 11/05/12
    --------------------------------16005-GOL-APROVADO.pdf, A , 03/10/12

    Acho que essa era sua dúvida.

    Valew.


    .................................................................................
    Krsantos
    avatar
    Convidado
    Convidado


    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  Convidado 19/8/2013, 19:31

    Clique, expande a lista
    Duplo Clique exibe valor do campo

    https://dl.dropboxusercontent.com/u/26441349/KrSantos_TreeView.rar


    Cumprimentos.
    avatar
    krsantos
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 57
    Registrado : 04/01/2013

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Feedback

    Mensagem  krsantos 20/8/2013, 21:00

    Amigo tudo bem!

    O que você fez esta perfeito!

    Existe um pequeno probleminha, na Resultado o campo código não chave primária portanto poderá existir registros duplicado com mesmo código, a unica distinção será o tipo da extensão do arquivo, um pode ser .pdf e o outro .tif porém com mesmo código.

    Na rotina de criação do 4º nó, quando ocorre a verificação no campo código, ele acha códigos duplicados e da um erro de '35602' key is not unique in colection. justamente por que os códigos são iguais.

    Como podemos resolver este problema?

    Dá uma olhada no arquivo em anexo.
    Anexos
    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. AttachmentTreeView_Iniciando Classe forum.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (100 Kb) Baixado 71 vez(es)


    .................................................................................
    Krsantos
    avatar
    Convidado
    Convidado


    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  Convidado 20/8/2013, 21:35

    Justamente.. para criar o nó ao menos um dos campos tem que ser único..
    Verei sobre isto.
    avatar
    Convidado
    Convidado


    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  Convidado 20/8/2013, 21:45

    Adicione o campo ID na consulta NomeArquivo..
    No Código.. nas linhas a seguir substitua código por ID

    'Adiciona os nós conforme o segundo recordset
    Set nodObject = .Add("E" & rsDescricao!Desc, tvwChild, "G" & rsNomeArq!Id, strNomeArquivo, 4)
    'cria o nó e a propriedade tag
    trvTree.Nodes("G" & rsNomeArq!Id).Tag = rsNomeArq!Id



    Cumprimentos.
    avatar
    krsantos
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 57
    Registrado : 04/01/2013

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Feedback

    Mensagem  krsantos 21/8/2013, 19:58

    Amigo, fiz exatamente o que você me instruiu, e funcionou porém quando mudo a gama de dados exibe outro erro.

    Analisei e não cheguei a uma conclusão.

    Por favor veja se você consegue enchergar o problema.

    Obrigado, você tem sido fundamental.
    Anexos
    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. AttachmentTreeView_Iniciando Classe forum.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (105 Kb) Baixado 42 vez(es)


    .................................................................................
    Krsantos
    avatar
    Convidado
    Convidado


    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  Convidado 21/8/2013, 20:23

    Irei verificar isto amigo.. mas é como eu havia falado  o Correto seria cada informacão dos nós estarem em uma tabela e estas relacionadas..

    Tentei fazer isto com as consultas.. mas não é a solução apropriada
    Estas informações deveriam estar em tabelas distintas..
    1 - tblProduto
    2 - tblClasse
    3 - tblFornecedor
    4 - tblDescrição..

    E estas relacionadas entre si


    Cumprimentos.
    avatar
    krsantos
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 57
    Registrado : 04/01/2013

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  krsantos 21/8/2013, 20:38

    Amigo,

    Vou fazer o seguinte, meu sistema hoje já tem algumas tabelas, vou providenciar esta modificação que você sugeriu.

    1 - tblProduto
    2 - tblClasse
    3 - tblFornecedor
    4 - tblDescrição.

    Aguarde, assim que eu fazer eu posto aqui, ai fazermos da forma correta.

    Abraços.


    .................................................................................
    Krsantos
    avatar
    Convidado
    Convidado


    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  Convidado 21/8/2013, 21:00

    Me equivoquei quanto ao nome das tabelas... que as tabelas sejam conforme a consulta criada.

    Cumprimentos.
    avatar
    Convidado
    Convidado


    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  Convidado 21/8/2013, 21:50

    Vou te dar uma dica do porque deste erro...

    Para montar cada nó... A informação deste tem que ser única na tabela...

    Por exemplo para o Nó Fornecedor..
    A tabela deve apresentar apenas um nome do fornecedor... Se apresentar dois registro com o mesmo nome gera este erro..
    pois nao criaria dois nos para o mesmo fornecedor..

    Por exemplo..
    para o fornecedor XXXXX seria


    XXXXX
        --- No Subsequente (Aqui irá ser apresentada as informacoes para este fornecedor) portanto nao pode haver dois.

    Se observar no seu exemplo.. o fornecedor saiu duplicado... o que eu tentei com as consutas.. foi para cada no.. agrupar a respectiva informacao..
    So que no agrupamento se um dos campo contiver valores diferentes para o mesmo fornecedor.. este será exibido duas vezes.

    Acuse se entendeu
    avatar
    krsantos
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 57
    Registrado : 04/01/2013

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Feedback

    Mensagem  krsantos 23/8/2013, 13:44

    Olá tudo bem!

    Vamos lá, seguindo seu conselho modifiquei o projeto para tentarmos conseguir resolver o desafio.

    Inseri no projeto as tabelas
    Classes - Contem as classes de cadastro dos arquivos.
    Descricao - Contem as descrições dos arquivos que serão cadastrados na tabela "Desenhos".
    Desenhos - Contem o cadastro dos arquivos, toda que insiro um novo arquivo no sistema esta tabela recebe as informações do cadastro do arquivo.
    RefDesenho - Contem todas referencias de relação dos produtos que foram cadastrado na tabela desenho, ou seja um arquivo cadastrado na tabela desenho pode ser usado em diversos Produtos - Contem cadastro dos produtos.
    Fornecedores - Contem informações de cadastro dos fornecedores dos produtos.
    Pastas - contem o nome da pasta que o arquivo será arquivado no servidor
    Sistema - contem o local do caminho onde sera arquivo em disco os arquivos no servidor.

    Sua sugestão é tentar preencher o TreeView com consultas diretamente nas tabelas.

    Crie a consulta resultado para mostras as informações relacionadas nas tabelas.

    O treeView deverá ser preenchido da mesma forma que estavamos fazendo.

    1º Nó - campo Classe
    2º Nó - campo Fornecedor parente do campo classe
    3º Nó - campo Desc parente do campo fornecedor
    4º Nó - campos nome_arquivo, Revisão, dataModArquivo parente do desc

    No treeview deverá aparecer o seguinte:

    Produto
    -------CFA
    ------------DESENHO DE FABRICACAO CFA
    --------------------------------------------16005 - 01/06/2010
    ------------DESENHO DE FABRICACAO
    ------------------------------------MG861 fl 1-2.TIF - 01/06/10

    Desenvolvimento de Produto
    -------XXX
    ------------PROCESSO APROVADO.
    --------------------------------16005-GOL-APROVADO.pdf, A , 11/05/12
    --------------------------------16005-GOL-APROVADO.pdf, A , 03/10/12

    No último nó quando clicar no deverá abrir o arquivo, então eu preciso que me retorne o caminho do arquivo, ou seja caminho do servidor + pasta+nomearquivo.

    Acho que essa era sua dúvida.

    Valew.
    Anexos
    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. AttachmentTreeView_Iniciando Classe forum.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (115 Kb) Baixado 39 vez(es)


    .................................................................................
    Krsantos
    avatar
    Convidado
    Convidado


    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  Convidado 23/8/2013, 17:34

    As tabelas devem ser relacionadas.. darei o exmeplo de como será para as duas primeiras.

    tblClasse >> idClasse, Classe
    tblFornecedor >>> Nesta tabela vai o campo para o relacionamento com a tblClasse... ClasseID

    Entao...

    Classe X >> IdClasse =1
    Clase N >> IdClasse = 2
     
    Fornecedor AAA >> ClasseID = 1
    Fornecedor BBB >> Classe ID = 2

    Assim Fornecedor AAA pertence a Classe X
    Assim Fornecedor BBB pertence a classe N


    Faça assim para todas as tabelas.

    Cumprimentos.
    avatar
    krsantos
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 57
    Registrado : 04/01/2013

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  krsantos 23/10/2013, 19:28

    Olá tudo bem!

    Depois ver suas dicas tentei fazer, porém quase deu tudo certo.

    A consulta Resultado é o resultado que eu quero na treeviwew.

    No exemplo em anexo, ele consegue criar apenas o primeiro nó da classe, quando ele passa para o segundo nó que ele emite um erro key is not unique e para a rotina.

    Preciso resolver este problema e estará solucionado este desafio.

    Conto com conhecimento de vocês.
    Anexos
    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. AttachmentTreeView_PROJETO_FORUM_V2.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (110 Kb) Baixado 45 vez(es)


    .................................................................................
    Krsantos
    avatar
    Convidado
    Convidado


    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  Convidado 23/10/2013, 19:55

    Criaste as tabelas conforme falei?


    Cumprimentos.
    avatar
    krsantos
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 57
    Registrado : 04/01/2013

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  krsantos 23/10/2013, 20:14

    Amigo,

    Criei sim,

    Agora existem as tabelas próprias do sistema, estás tabelas já estão sendo usada no sistema, porém o resultado que vejo no meu sistema é em uma lista e eu quero em treeview.

    Desenhos - Tabela onde os cadastros dos arquivos são realizados, ou seja cada arquivo é cadastrado aqui.
    DesenhoRef - Tabela onde tem a relação dos produtos que estão relacionados com os arquivos cadastrado.
    Resultado - Consulta onde mostra todos os dados que eu quero na treeview.

    Creio que foi isso que você pediu para eu fazer correto?



    .................................................................................
    Krsantos
    avatar
    krsantos
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 57
    Registrado : 04/01/2013

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  krsantos 24/10/2013, 14:24

    Estive pensando!
    O que acha de se :
    Criar uma consulta para classe e fazer o treeview ser preenchida, nesta consulta pode garantir que havera apenas uma classe de cada.
    Depois Criar uma consulta para os fornecedor e fazer o mesmo porem sendo preenchido do no classe.
    Assim por diante. Fazendo uma rotina para consulta, assim como vc fez, uma de cada vez.
    Funcionaria?
    Olha esse treeview esta me tirando o sono, nao consigo fazer funcionar nem a pau.
    Se vc puder me dar outra sugestao eu faço também.
    Grato.


    .................................................................................
    Krsantos
    avatar
    krsantos
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 57
    Registrado : 04/01/2013

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  krsantos 24/10/2013, 18:54

    Estive pensando e fiz algumas mudanças nas rotinas e consegui resolver parte do problema.

    Agora ele preenche parte do treeviewm porem quando troca a classe a rotina cria outro nó só que quando vai criar o fornecedor da outra classe ele da um erro, creio que falta um pequeno ajuste, porém já olhei tanto este código que não estou consegui mais raciocinar.

    Poderia dar uma olhada nos rotinas.

    Abrir o formulário frmTreeView_2 e clicar no botão preencher.

    Tem como me ajudar!
    Anexos
    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. AttachmentTreeView_PROJETO_FORUM_V2.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (137 Kb) Baixado 34 vez(es)


    .................................................................................
    Krsantos
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8443
    Registrado : 05/11/2009

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  Alexandre Neves 24/10/2013, 19:08

    Boa tarde,
    As chaves têm de ser únicas.
    Por exemplo, para o mesmo fornecedor tem vários registos. Neste caso, terá de diferenciar o código do fornecedor acrescentando partícula de diferenciação


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    krsantos
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 57
    Registrado : 04/01/2013

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  krsantos 24/10/2013, 19:25

    Oi tudo bem!
    Tem como dar uma ideia de como colocar este direnciador?
    Ja fiz varios testes e nao consegui.


    .................................................................................
    Krsantos
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8443
    Registrado : 05/11/2009

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  Alexandre Neves 24/10/2013, 20:08

    Option Compare Database
    Option Explicit
    '====================================
    'Funções para treeView
    '------------------------------------
    ' Define public objects
    Dim RsClasse As DAO.Recordset
    Dim rsFornecedor As DAO.Recordset
    Dim rsDescricao As DAO.Recordset
    Dim rsNomeArq As DAO.Recordset
    Dim StrSQL As String
    Dim strSQL1 As String
    Dim strSQL2 As String
    Dim strSQL3 As String
    Dim Selecionado As Boolean
    '=====================================

    '-------------------------
    Private Sub Form_Current()
    '-------------------------
    ' form open with focus in search field
    Me.FindTipoConta.SetFocus
    End Sub


    Private Sub Form_Load()
    '===========================================================
    'Função para treeview
    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    With Me.myTreeView
    ' set style property to value that allows pictures
    '.Style = tvwTreelinesPlusMinusPictureText
    ' set to automatically expand selected node and collapse previous node
    .SingleSel = True ' Single Selection
    End With
    ' initialize tree
    TreeInit
    Selecionado = False
    End Sub

    '===================================================================================================================
    'Funções para treeView
    '===================================================================================================================
    '----------------------
    Private Sub TreeInit()
    '----------------------
    'On Error Resume Next
    ' Code per example by Robert Kirchner
    ' microsoft.public.access.activexcontrol
    ' Help on treeview (detailed)
    'Adaptação executada por Alexandre Neves
    'FÓRUM MÁXIMO ACCESS
    'Em 04/06/2012

    Dim trvTree As control
    Dim imgList As control
    Dim nodObject As Node
    Dim i As Integer
    Dim RCount As Integer
    Dim strClasse As String
    Dim strFornecedor As String
    Dim strDescricao As String
    Dim strNomeArquivo As String
    Dim db As DAO.Database
    Dim ContaC As Integer, ContaE As Integer, ContaG As Integer
    'seta o banco de dados
    Set db = CurrentDb
    Set trvTree = Me.myTreeView
    Set imgList = Me.MyImageList
    trvTree.ImageList = imgList.Object
    With trvTree.Nodes

    ' limpa os possíveis nós existentes
    .Clear

    '==========================================================================================================================
    'PARA O PRIMEIRO NÓ
    '==========================================================================================================================
    'Seta o recordset para o primeiro nó
    Set RsClasse = db.OpenRecordset("Classe", dbOpenSnapshot)
    RsClasse.MoveLast
    RCount = RsClasse.RecordCount
    RsClasse.MoveFirst

    'executa o loop pelo recorset adicionando o primeiro nó à treeview
    Do While Not RsClasse.EOF
    strClasse = RsClasse!Classe
    'Concatena os campos para criar o texto do nó
    If Len(Trim(Nz(RsClasse!Classe))) > 0 Then
    strClasse = Format(strClasse, ">") '& ", " & RsClasse!PlanoConta
    End If
    'Adiciona o noode do tipo de conta no Treeview
    Set nodObject = .Add(, , "A" & CStr(RsClasse!Classe), strClasse, 1)

    '==========================================================================================================================
    'PARA O SEGUNDO NÓ
    '==========================================================================================================================
    'Seta o recordset para o segundo nó, observe que ele é filtrado pelo parâmetro do recordset anterior
    strSQL1 = "SELECT * FROM Fornecedor WHERE [Classe] = '" & RsClasse!Classe & "'"
    Set rsFornecedor = db.OpenRecordset(strSQL1, dbOpenSnapshot)
    'executa o loop pelo recorset adicionando o primeiro nó à treeview
    Do While Not rsFornecedor.EOF
    'se o recordset tiver valor nulo vai para a linha NoFornecedor
    If IsNull(rsFornecedor!Fornecedor) Then GoTo NoFornecedor
    If Len(Trim(Nz(rsFornecedor!Fornecedor))) > 0 Then
    strFornecedor = rsFornecedor!Fornecedor
    End If
    'Adiciona os nós conforme o segundo recordset
    ContaC = ContaC + 1
    Set nodObject = .Add("A" & RsClasse!Classe, tvwChild, "C" & ContaC & rsFornecedor!Fornecedor, strFornecedor, 2)
    '.. cria o nó e a propriedade tag
    trvTree.Nodes("C" & ContaC & rsFornecedor!Fornecedor).Tag = rsFornecedor!Fornecedor

    '==========================================================================================================================
    'PARA O TERCEIRO NÓ
    '==========================================================================================================================
    strSQL2 = "SELECT * FROM Descricao WHERE Fornecedor = '" & rsFornecedor!Fornecedor & "'"
    Set rsDescricao = db.OpenRecordset(strSQL2, dbOpenSnapshot)
    Do While Not rsDescricao.EOF
    'se o recordset tiver valor nulo vai para a linha NoDescricao
    If IsNull(rsDescricao!Desc) Then GoTo NoDescricao
    'Concatena os campos para criar o texto do nó
    If Len(Trim(Nz(rsDescricao!Desc))) > 0 Then
    strDescricao = rsDescricao!Desc
    End If
    'Adiciona os nós conforme o segundo recordset
    ContaE = ContaE + 1
    Set nodObject = .Add("C" & ContaC & rsFornecedor!Fornecedor, tvwChild, "E" & ContaE & rsDescricao!Desc, strDescricao, 3)
    'cria o nó e a propriedade tag
    trvTree.Nodes("E" & ContaE & rsDescricao!Desc).Tag = rsDescricao!Desc

    '==========================================================================================================================
    'PARA O QUARTO NÓ
    '==========================================================================================================================
    strSQL3 = "SELECT * FROM NomeArquivo WHERE Desc = '" & rsDescricao!Desc & "'"
    Set rsNomeArq = db.OpenRecordset(strSQL3, dbOpenSnapshot)
    Do While Not rsNomeArq.EOF
    'se o recordset tiver valor nulo vai para a linha NoDescricao
    If IsNull(rsNomeArq!Nome_Arq) Then GoTo NoNomeArquivo
    'Concatena os campos para criar o texto do nó
    If Len(Trim(Nz(rsNomeArq!Nome_Arq))) > 0 Then
    strNomeArquivo = rsNomeArq!Nome_Arq & " >> " & rsNomeArq!Revisão & " >> " & rsNomeArq!DataModArq
    End If
    'Adiciona os nós conforme o segundo recordset
    ContaG = ContaG + 1
    Set nodObject = .Add("E" & ContaE & rsDescricao!Desc, tvwChild, "G" & ContaG & rsNomeArq!Id, strNomeArquivo, 4)
    'cria o nó e a propriedade tag
    trvTree.Nodes("G" & ContaG & rsNomeArq!Id).Tag = rsNomeArq!Id
    '-------------------------------------------------------------------------------------------------------------------------
    NoNomeArquivo:
    rsNomeArq.MoveNext
    Loop
    NoDescricao:
    rsDescricao.MoveNext
    Loop
    NoFornecedor:
    rsFornecedor.MoveNext
    Loop
    RsClasse.MoveNext
    Loop
    'rsFornecedor.MoveNext
    'Loop
    End With

    'Limpa os recordset's envolvidos
    RsClasse.Close
    rsFornecedor.Close
    rsDescricao.Close
    ' rsNomeArq.Close
    Set RsClasse = Nothing
    Set rsFornecedor = Nothing
    Set rsDescricao = Nothing
    ' Set rsNomeArq = Nothing
    End Sub

    '----------------------------
    Private Sub cmdSearch_Click()
    '----------------------------
    Dim strSearch As String
    ' if search field contains a value
    50 If Not IsNull(FindTipoConta) Then
    60 strSearch = Me.FindTipoConta.Value

    ' .. find a node like the value
    70 MyTreeview_FindNodeLike (strSearch)
    80 End If

    '.. and set the focus to Treeciew control
    90 Me.myTreeView.SetFocus
    End Sub

    '-----------------------------------
    Private Sub FindChild_AfterUpdate()
    '-----------------------------------

    ' if search field has a value
    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    If Not IsNull(Me.FindTipoConta) Then
    ' .. then call search button click event
    cmdSearch_Click
    End If
    End Sub


    '-------------------------------
    Private Sub MyTreeView_DblClick()
    '-------------------------------
    ' call sub to react to double-click. Number 2 indicates
    ' that call is being made by a double-click action
    Call DisplayFormDblClick(2)
    End Sub

    '-------------------------------
    Private Sub MyTreeView_Click()
    '-------------------------------
    ' call sub to react to double-click. Number 2 indicates
    ' that call is being made by a double-click action
    Call DisplayForm(2)
    End Sub

    '---------------------------------------------
    Function MyTreeview_FindNode(strKey As String)
    '---------------------------------------------

    ' define a control
    Dim trvTree As control

    ' .. and set to Treeview
    Set trvTree = Me.myTreeView

    ' make node selected
    trvTree.Nodes(strKey).Selected = True

    ' .. and insure node is visible
    trvTree.Nodes(trvTree.SelectedItem.Index).EnsureVisible

    ' and expand selected node, if desired
    'trvTree.Object.SelectedItem.Expanded = True
    End Function

    '-----------------------------------------------
    Function MyTreeview_FindNodeLike(C As String)
    '-----------------------------------------------

    ' set up a SQL para realizar a busca na primeira tabela
    StrSQL = "SELECT * FROM Classe WHERE [Classe] LIKE """ & Me.FindTipoConta & "*"" ORDER BY Classe"

    ' abre o recordset
    Set RsClasse = CurrentDb.OpenRecordset(StrSQL)

    ' Se no recordset nao contem o texto vai para o próximo nó
    If RsClasse.BOF Or RsClasse.EOF Then GoTo ContinuaProximoNo
    ' Caso contrario move para o primento registro
    RsClasse.MoveFirst
    'Busca no nó C
    MyTreeview_FindNode ("A" & CStr(RsClasse!Classe))
    Exit Function
    ContinuaProximoNo:
    ' set up a SQL para realizar a busca na segunda tabela
    StrSQL = "SELECT * from Fornecedor WHERE [Fornecedor] LIKE """ & _
    Me.FindTipoConta & "*"" ORDER BY Fornecedor"

    Set rsFornecedor = CurrentDb.OpenRecordset(StrSQL)
    ' Se no recordset nao contem o texto encerra a função emitindo mensagem
    If rsFornecedor.BOF Or rsFornecedor.EOF Then GoTo ContinuaProximoNo_1
    ' Caso contrario move para o primento registro
    rsFornecedor.MoveFirst
    ' Busca no nó E
    MyTreeview_FindNode ("C" & CStr(rsFornecedor!Fornecedor))

    ContinuaProximoNo_1:
    ' set up a SQL para realizar a busca na segunda tabela
    StrSQL = "SELECT * from Descricao WHERE [Desc] LIKE """ & Me.FindTipoConta & "*"" ORDER BY Desc"

    Set rsDescricao = CurrentDb.OpenRecordset(StrSQL)
    ' Se no recordset nao contem o texto encerra a função emitindo mensagem
    If rsDescricao.BOF Or rsDescricao.EOF Then GoTo ContinuaProximoNo_2
    ' Caso contrario move para o primento registro
    rsDescricao.MoveFirst
    ' Busca no nó E
    MyTreeview_FindNode ("E" & CStr(rsDescricao!Desc))
    ContinuaProximoNo_2:
    ' set up a SQL para realizar a busca na segunda tabela
    StrSQL = "SELECT * from NomeArquivo WHERE [Nome_Arq] LIKE """ & Me.FindTipoConta & "*"" ORDER BY Nome_Arq"

    Set rsNomeArq = CurrentDb.OpenRecordset(StrSQL)
    ' Se no recordset nao contem o texto encerra a função emitindo mensagem
    If rsNomeArq.BOF Or rsNomeArq.EOF Then MsgBox "Registro não encontrado", vbInformation, "Atenção": Exit Function
    ' Caso contrario move para o primento registro
    rsNomeArq.MoveFirst
    ' Busca no nó E
    MyTreeview_FindNode ("G" & CStr(rsNomeArq!Fornecedor))


    Me.FindTipoConta = Null
    RsClasse.Close
    rsFornecedor.Close
    rsDescricao.Close
    rsNomeArq.Close
    Set RsClasse = Null
    Set rsFornecedor = Null
    Set rsDescricao = Null
    Set rsNomeArq = Null
    End Function

    '------------------------------------------------------------------------
    Private Sub MyTreeview_KeyDown(KeyCode As Integer, ByVal Shift As Integer)
    '------------------------------------------------------------------------
    ' pressing space is same action as double-click
    If (KeyCode = vbKeyShift) And acShiftMask Then

    ' call sub to react to shift key press. Number 1 indicates
    ' that call is being made by a press of shift key

    Call DisplayForm(1) 'MyTreeView_DblClick
    End If
    End Sub
    '----------------------------
    Sub DisplayForm(i As Integer)
    '----------------------------
    Dim strKey As String
    Dim strTag As String
    Dim StrSQLX As String
    Dim strFilter As String
    Dim rs As DAO.Recordset
    Dim db As DAO.Database


    ' Pega a chave do nó selecionado
    strKey = Me.myTreeView.SelectedItem.Key
    ' .. em seguida, obtem a propriedade do tag do nó
    'strTag = Nz(Me.myTreeView.Nodes(strKey).Tag, "")
    strTag = Me.myTreeView.Nodes(strKey).Tag
    ' .. then if there is a tag value
    If Len(strTag) >= 0 Then
    'Obtem a letra do tag
    Select Case Left(strKey, 1)

    'Executa a operação conforme o nó selecionado de acordo com o valor do tag
    Case "A"
    Case "C"
    Case "E"
    Case "G"
    End Select
    End If
    End Sub

    '----------------------------
    Sub DisplayFormDblClick(i As Integer)
    '----------------------------
    Dim strKey As String
    Dim strTag As String
    Dim strFilter As String
    ' Pega a chave do nó selecionado
    strKey = Me.myTreeView.SelectedItem.Key
    ' .. em seguida, obtem a propriedade do tag do nó
    strTag = Nz(Me.myTreeView.Nodes(strKey).Tag, "")

    ' .. then if there is a tag value
    If Len(strTag) >= 0 Then
    'Obtem a letra do tag
    Select Case Left(strKey, 1)

    'Executa a operação conforme o nó selecionado de acordo com o valor do tag
    Case "A"
    MsgBox strTag
    ' Me.txtIdConta = DLookup("Cod_Produto_Filho", "Conta", "Cod_Produto_Filho =" & Mid(strKey, 2, 4))
    ' Me.txtConta = DLookup("PlaNoProduto", "Conta", "Cod_Produto_Filho =" & Mid(strKey, 2, 4))
    ' Selecionado = False
    Case "C"
    MsgBox strTag
    ' Me.txtIDTipo = strTag
    ' Me.txtTipo = DLookup("TipoConta", "ResultadoCns2", "Classe =" & strTag)
    ' Selecionado = False
    Case "E"
    MsgBox strTag
    ' Me.txtIdDesc = strTag
    ' Me.txtDescricao = DLookup("Descricao", "ResultadoCns3", "Fornecedor =" & strTag)
    ' Selecionado = True
    Case "G"
    MsgBox strTag
    ' Me.txtIdDesc = strTag
    ' Me.txtDescricao = DLookup("Descricao", "ResultadoCns3", "Fornecedor =" & strTag)
    ' Selecionado = True

    End Select
    End If
    End Sub


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    krsantos
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 57
    Registrado : 04/01/2013

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  krsantos 24/10/2013, 20:19

    Inseri seu codigo e legal funcionou.
    porem ele nao esta agrupando.
    Ex no nó desenvolvimento de produto era para ficar apenas o fornecedor apll , processo aprovado , ranger aprovado.

    Devo fazer o agrupamento nos sqls?

    Só falta acertar isso.
    Muito bom o que vc fez.


    .................................................................................
    Krsantos
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8443
    Registrado : 05/11/2009

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  Alexandre Neves 24/10/2013, 20:25

    agora vou jantar
    mas ainda não entendi a mecânica do funcionando


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    krsantos
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 57
    Registrado : 04/01/2013

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  krsantos 24/10/2013, 20:41

    Blz obrigado.
    O que vc fez esta Ok.
    Porem os nos nao podem se repetir.
    Os que aparerem no de cima nao pode aparecer nos no de debaixo.

    Ex
    Desenvolvimento de produto
    -------Apll
    ----------------Processo Aprovado
    --------------------------24050-ranger-aprovado.pdf
    Produto
    ----------apll
    ----------------desenho de fabricacao
    -------------------------24050.pdf
    -------------------------24050.dwg

    ok, neste codigo que vc desenvolver tudo e esta no desenvolvimento de produto, tambem esta no produto.

    Precisa apenas agrupar igual o ex que escrevi.


    .................................................................................
    Krsantos
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8443
    Registrado : 05/11/2009

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  Alexandre Neves 24/10/2013, 20:48

    A partir dos dados da tabela, explique como deve funcionar


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    krsantos
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 57
    Registrado : 04/01/2013

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  krsantos 24/10/2013, 20:59

    Isso, eu uma consulta chamada Resultado esta consulta busca nas tabelas desenhos e refdesenhos os dados de cada arquivo cadastrado no banco de dados
    Tabela desenho - eu cadastro arquivo com, classe, fornecedor, nome arquivo, revisao etc.
    Tabela refdesenho eu cadastro produtos que se relacionam com os arquivos cadastado.
    Estas tabelas sao populado por usuarios.

    Quero o treeview mostre o resultado de consulta, no caso "resultado" agrupando por
    Classe
    Fornecedor
    Desc do arquivo
    Nome do arquivo, revisao, datamod

    Nao sei que consegui explicar direito.


    .................................................................................
    Krsantos
    avatar
    krsantos
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 57
    Registrado : 04/01/2013

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  krsantos 24/10/2013, 21:04

    Tudo vai funcior apartir da consulta resultado.
    Poderei ter arquivos com fornecedores diferentes, descricoes diferentes.
    Quando pesquisar pelo codigo do produto o treeview devera trazer todos as informacoes de arquivos.

    Se puder na tabela desenhos pode trocar o fornecedor e vc vera que no treeview ira aparecer dois fornecedores.


    .................................................................................
    Krsantos
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8443
    Registrado : 05/11/2009

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  Alexandre Neves 24/10/2013, 21:46

    Será isto? (Ainda não percebi a mecânica do funcionamento. Se puder criar um fluxograma)
    Option Compare Database
    Option Explicit
    '====================================
    'Funções para treeView
    '------------------------------------
    ' Define public objects
    Dim rsClasse As DAO.Recordset
    Dim rsFornecedor As DAO.Recordset
    Dim rsDescricao As DAO.Recordset
    Dim rsNomeArq As DAO.Recordset
    Dim strSQL As String
    Dim strSQL1 As String
    Dim strSQL2 As String
    Dim strSQL3 As String
    Dim Selecionado As Boolean
    '=====================================

    '-------------------------
    Private Sub Form_Current()
    '-------------------------
    ' form open with focus in search field
    Me.FindTipoConta.SetFocus
    End Sub


    Private Sub Form_Load()
    '===========================================================
    'Função para treeview
    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    With Me.myTreeView
    ' set style property to value that allows pictures
    '.Style = tvwTreelinesPlusMinusPictureText
    ' set to automatically expand selected node and collapse previous node
    .SingleSel = True ' Single Selection
    End With
    ' initialize tree
    TreeInit
    Selecionado = False
    End Sub

    '===================================================================================================================
    'Funções para treeView
    '===================================================================================================================
    '----------------------
    Private Sub TreeInit()
    '----------------------
    'On Error Resume Next
    ' Code per example by Robert Kirchner
    ' microsoft.public.access.activexcontrol
    ' Help on treeview (detailed)
    'Adaptação executada por Alexandre Neves
    'FÓRUM MÁXIMO ACCESS
    'Em 04/06/2012

    Dim trvTree As control
    Dim imgList As control
    Dim nodObject As Node
    Dim i As Integer
    Dim RCount As Integer
    Dim strClasse As String
    Dim strFornecedor As String
    Dim strDescricao As String
    Dim strNomeArquivo As String
    Dim db As DAO.Database
    Dim ContaA As Integer, ContaC As Integer, ContaE As Integer, ContaG As Integer
    'seta o banco de dados
    Set db = CurrentDb
    Set trvTree = Me.myTreeView
    Set imgList = Me.MyImageList
    trvTree.ImageList = imgList.Object
    With trvTree.Nodes

    ' limpa os possíveis nós existentes
    .Clear

    '==========================================================================================================================
    'PARA O PRIMEIRO NÓ
    '==========================================================================================================================
    'Seta o recordset para o primeiro nó
    'Set rsClasse = db.OpenRecordset("Classe", dbOpenSnapshot)
    Set rsClasse = db.OpenRecordset("SELECT DISTINCT Classe FROM Resultado;", dbOpenSnapshot)
    rsClasse.MoveLast
    RCount = rsClasse.RecordCount
    rsClasse.MoveFirst

    'executa o loop pelo recorset adicionando o primeiro nó à treeview
    Do While Not rsClasse.EOF
    strClasse = rsClasse!Classe
    'Concatena os campos para criar o texto do nó
    If Len(Trim(Nz(rsClasse!Classe))) > 0 Then
    strClasse = Format(strClasse, ">") '& ", " & RsClasse!PlanoConta
    End If
    'Adiciona o noode do tipo de conta no Treeview
    ContaA = ContaA + 1
    Set nodObject = .Add(, , "A" & ContaA & CStr(rsClasse!Classe), strClasse, 1)

    '==========================================================================================================================
    'PARA O SEGUNDO NÓ
    '==========================================================================================================================
    'Seta o recordset para o segundo nó, observe que ele é filtrado pelo parâmetro do recordset anterior
    'strSQL1 = "SELECT * FROM Fornecedor WHERE [Classe] = '" & rsClasse!Classe & "'"
    strSQL1 = "SELECT DISTINCT Cod_Produto_Filho, Classe, Fornecedor, ID FROM Resultado WHERE [Classe] = '" & rsClasse!Classe & "'"
    Set rsFornecedor = db.OpenRecordset(strSQL1, dbOpenSnapshot)
    'executa o loop pelo recorset adicionando o primeiro nó à treeview
    Do While Not rsFornecedor.EOF
    'se o recordset tiver valor nulo vai para a linha NoFornecedor
    If IsNull(rsFornecedor!Fornecedor) Then GoTo NoFornecedor
    If Len(Trim(Nz(rsFornecedor!Fornecedor))) > 0 Then
    strFornecedor = rsFornecedor!Fornecedor
    End If
    'Adiciona os nós conforme o segundo recordset
    ContaC = ContaC + 1
    Set nodObject = .Add("A" & ContaA & rsClasse!Classe, tvwChild, "C" & ContaC & rsFornecedor!Fornecedor, strFornecedor, 2)
    '.. cria o nó e a propriedade tag
    trvTree.Nodes("C" & ContaC & rsFornecedor!Fornecedor).Tag = rsFornecedor!Fornecedor

    '==========================================================================================================================
    'PARA O TERCEIRO NÓ
    '==========================================================================================================================
    'strSQL2 = "SELECT * FROM Descricao WHERE [Classe] = '" & rsClasse!Classe & "' and Fornecedor = '" & rsFornecedor!Fornecedor & "'"
    strSQL2 = "SELECT DISTINCT Cod_Produto_Filho, Classe, Fornecedor,Desc,ID FROM Resultado WHERE [Classe] = '" & rsClasse!Classe & "' and Fornecedor = '" & rsFornecedor!Fornecedor & "'"
    Set rsDescricao = db.OpenRecordset(strSQL2, dbOpenSnapshot)
    Do While Not rsDescricao.EOF
    'se o recordset tiver valor nulo vai para a linha NoDescricao
    If IsNull(rsDescricao!Desc) Then GoTo NoDescricao
    'Concatena os campos para criar o texto do nó
    If Len(Trim(Nz(rsDescricao!Desc))) > 0 Then
    strDescricao = rsDescricao!Desc
    End If
    'Adiciona os nós conforme o segundo recordset
    ContaE = ContaE + 1
    Set nodObject = .Add("C" & ContaC & rsFornecedor!Fornecedor, tvwChild, "E" & ContaE & rsDescricao!Desc, strDescricao, 3)
    'cria o nó e a propriedade tag
    trvTree.Nodes("E" & ContaE & rsDescricao!Desc).Tag = rsDescricao!Desc

    '==========================================================================================================================
    'PARA O QUARTO NÓ
    '==========================================================================================================================
    'strSQL3 = "SELECT * FROM NomeArquivo WHERE [Classe] = '" & rsClasse!Classe & "' and Fornecedor = '" & rsFornecedor!Fornecedor & "' and Desc = '" & rsDescricao!Desc & "'"
    strSQL3 = "SELECT DISTINCT ID,Cod_Produto_Filho, Fornecedor,Código,Desc,Nome_Arq,Revisão,DataModArq FROM Resultado WHERE [Classe] = '" & rsClasse!Classe & "' and Fornecedor = '" & rsFornecedor!Fornecedor & "' and Desc = '" & rsDescricao!Desc & "'"
    Set rsNomeArq = db.OpenRecordset(strSQL3, dbOpenSnapshot)
    Do While Not rsNomeArq.EOF
    'se o recordset tiver valor nulo vai para a linha NoDescricao
    If IsNull(rsNomeArq!Nome_Arq) Then GoTo NoNomeArquivo
    'Concatena os campos para criar o texto do nó
    If Len(Trim(Nz(rsNomeArq!Nome_Arq))) > 0 Then
    strNomeArquivo = rsNomeArq!Nome_Arq & " >> " & rsNomeArq!Revisão & " >> " & rsNomeArq!DataModArq
    End If
    'Adiciona os nós conforme o segundo recordset
    ContaG = ContaG + 1
    Set nodObject = .Add("E" & ContaE & rsDescricao!Desc, tvwChild, "G" & ContaG & rsNomeArq!Id, strNomeArquivo, 4)
    'cria o nó e a propriedade tag
    trvTree.Nodes("G" & ContaG & rsNomeArq!Id).Tag = rsNomeArq!Id
    '-------------------------------------------------------------------------------------------------------------------------
    NoNomeArquivo:
    rsNomeArq.MoveNext
    Loop
    NoDescricao:
    rsDescricao.MoveNext
    Loop
    NoFornecedor:
    rsFornecedor.MoveNext
    Loop
    rsClasse.MoveNext
    Loop
    'rsFornecedor.MoveNext
    'Loop
    End With

    'Limpa os recordset's envolvidos
    rsClasse.Close
    rsFornecedor.Close
    rsDescricao.Close
    ' rsNomeArq.Close
    Set rsClasse = Nothing
    Set rsFornecedor = Nothing
    Set rsDescricao = Nothing
    ' Set rsNomeArq = Nothing
    End Sub

    '----------------------------
    Private Sub cmdSearch_Click()
    '----------------------------
    Dim strSearch As String
    ' if search field contains a value
    50 If Not IsNull(FindTipoConta) Then
    60 strSearch = Me.FindTipoConta.Value

    ' .. find a node like the value
    70 MyTreeview_FindNodeLike (strSearch)
    80 End If

    '.. and set the focus to Treeciew control
    90 Me.myTreeView.SetFocus
    End Sub

    '-----------------------------------
    Private Sub FindChild_AfterUpdate()
    '-----------------------------------

    ' if search field has a value
    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    If Not IsNull(Me.FindTipoConta) Then
    ' .. then call search button click event
    cmdSearch_Click
    End If
    End Sub


    '-------------------------------
    Private Sub MyTreeView_DblClick()
    '-------------------------------
    ' call sub to react to double-click. Number 2 indicates
    ' that call is being made by a double-click action
    Call DisplayFormDblClick(2)
    End Sub

    '-------------------------------
    Private Sub MyTreeView_Click()
    '-------------------------------
    ' call sub to react to double-click. Number 2 indicates
    ' that call is being made by a double-click action
    Call DisplayForm(2)
    End Sub

    '---------------------------------------------
    Function MyTreeview_FindNode(strKey As String)
    '---------------------------------------------

    ' define a control
    Dim trvTree As control

    ' .. and set to Treeview
    Set trvTree = Me.myTreeView

    ' make node selected
    trvTree.Nodes(strKey).Selected = True

    ' .. and insure node is visible
    trvTree.Nodes(trvTree.SelectedItem.Index).EnsureVisible

    ' and expand selected node, if desired
    'trvTree.Object.SelectedItem.Expanded = True
    End Function

    '-----------------------------------------------
    Function MyTreeview_FindNodeLike(C As String)
    '-----------------------------------------------

    ' set up a SQL para realizar a busca na primeira tabela
    strSQL = "SELECT * FROM Classe WHERE [Classe] LIKE """ & Me.FindTipoConta & "*"" ORDER BY Classe"

    ' abre o recordset
    Set rsClasse = CurrentDb.OpenRecordset(strSQL)

    ' Se no recordset nao contem o texto vai para o próximo nó
    If rsClasse.BOF Or rsClasse.EOF Then GoTo ContinuaProximoNo
    ' Caso contrario move para o primento registro
    rsClasse.MoveFirst
    'Busca no nó C
    MyTreeview_FindNode ("A" & CStr(rsClasse!Classe))
    Exit Function
    ContinuaProximoNo:
    ' set up a SQL para realizar a busca na segunda tabela
    strSQL = "SELECT * from Fornecedor WHERE [Fornecedor] LIKE """ & _
    Me.FindTipoConta & "*"" ORDER BY Fornecedor"

    Set rsFornecedor = CurrentDb.OpenRecordset(strSQL)
    ' Se no recordset nao contem o texto encerra a função emitindo mensagem
    If rsFornecedor.BOF Or rsFornecedor.EOF Then GoTo ContinuaProximoNo_1
    ' Caso contrario move para o primento registro
    rsFornecedor.MoveFirst
    ' Busca no nó E
    MyTreeview_FindNode ("C" & CStr(rsFornecedor!Fornecedor))

    ContinuaProximoNo_1:
    ' set up a SQL para realizar a busca na segunda tabela
    strSQL = "SELECT * from Descricao WHERE [Desc] LIKE """ & Me.FindTipoConta & "*"" ORDER BY Desc"

    Set rsDescricao = CurrentDb.OpenRecordset(strSQL)
    ' Se no recordset nao contem o texto encerra a função emitindo mensagem
    If rsDescricao.BOF Or rsDescricao.EOF Then GoTo ContinuaProximoNo_2
    ' Caso contrario move para o primento registro
    rsDescricao.MoveFirst
    ' Busca no nó E
    MyTreeview_FindNode ("E" & CStr(rsDescricao!Desc))
    ContinuaProximoNo_2:
    ' set up a SQL para realizar a busca na segunda tabela
    strSQL = "SELECT * from NomeArquivo WHERE [Nome_Arq] LIKE """ & Me.FindTipoConta & "*"" ORDER BY Nome_Arq"

    Set rsNomeArq = CurrentDb.OpenRecordset(strSQL)
    ' Se no recordset nao contem o texto encerra a função emitindo mensagem
    If rsNomeArq.BOF Or rsNomeArq.EOF Then MsgBox "Registro não encontrado", vbInformation, "Atenção": Exit Function
    ' Caso contrario move para o primento registro
    rsNomeArq.MoveFirst
    ' Busca no nó E
    MyTreeview_FindNode ("G" & CStr(rsNomeArq!Fornecedor))


    Me.FindTipoConta = Null
    rsClasse.Close
    rsFornecedor.Close
    rsDescricao.Close
    rsNomeArq.Close
    Set rsClasse = Null
    Set rsFornecedor = Null
    Set rsDescricao = Null
    Set rsNomeArq = Null
    End Function

    '------------------------------------------------------------------------
    Private Sub MyTreeview_KeyDown(KeyCode As Integer, ByVal Shift As Integer)
    '------------------------------------------------------------------------
    ' pressing space is same action as double-click
    If (KeyCode = vbKeyShift) And acShiftMask Then

    ' call sub to react to shift key press. Number 1 indicates
    ' that call is being made by a press of shift key

    Call DisplayForm(1) 'MyTreeView_DblClick
    End If
    End Sub
    '----------------------------
    Sub DisplayForm(i As Integer)
    '----------------------------
    Dim strKey As String
    Dim strTag As String
    Dim StrSQLX As String
    Dim strFilter As String
    Dim rs As DAO.Recordset
    Dim db As DAO.Database


    ' Pega a chave do nó selecionado
    strKey = Me.myTreeView.SelectedItem.Key
    ' .. em seguida, obtem a propriedade do tag do nó
    'strTag = Nz(Me.myTreeView.Nodes(strKey).Tag, "")
    strTag = Me.myTreeView.Nodes(strKey).Tag
    ' .. then if there is a tag value
    If Len(strTag) >= 0 Then
    'Obtem a letra do tag
    Select Case Left(strKey, 1)

    'Executa a operação conforme o nó selecionado de acordo com o valor do tag
    Case "A"
    Case "C"
    Case "E"
    Case "G"
    End Select
    End If
    End Sub

    '----------------------------
    Sub DisplayFormDblClick(i As Integer)
    '----------------------------
    Dim strKey As String
    Dim strTag As String
    Dim strFilter As String
    ' Pega a chave do nó selecionado
    strKey = Me.myTreeView.SelectedItem.Key
    ' .. em seguida, obtem a propriedade do tag do nó
    strTag = Nz(Me.myTreeView.Nodes(strKey).Tag, "")

    ' .. then if there is a tag value
    If Len(strTag) >= 0 Then
    'Obtem a letra do tag
    Select Case Left(strKey, 1)

    'Executa a operação conforme o nó selecionado de acordo com o valor do tag
    Case "A"
    MsgBox strTag
    ' Me.txtIdConta = DLookup("Cod_Produto_Filho", "Conta", "Cod_Produto_Filho =" & Mid(strKey, 2, 4))
    ' Me.txtConta = DLookup("PlaNoProduto", "Conta", "Cod_Produto_Filho =" & Mid(strKey, 2, 4))
    ' Selecionado = False
    Case "C"
    MsgBox strTag
    ' Me.txtIDTipo = strTag
    ' Me.txtTipo = DLookup("TipoConta", "ResultadoCns2", "Classe =" & strTag)
    ' Selecionado = False
    Case "E"
    MsgBox strTag
    ' Me.txtIdDesc = strTag
    ' Me.txtDescricao = DLookup("Descricao", "ResultadoCns3", "Fornecedor =" & strTag)
    ' Selecionado = True
    Case "G"
    MsgBox strTag
    ' Me.txtIdDesc = strTag
    ' Me.txtDescricao = DLookup("Descricao", "ResultadoCns3", "Fornecedor =" & strTag)
    ' Selecionado = True

    End Select
    End If
    End Sub


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    krsantos
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 57
    Registrado : 04/01/2013

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  krsantos 24/10/2013, 21:53

    Podemos, continuar amanhã?
    Vou testar e fazer um fluxograma para explicar melhor.
    Agradeço muito sua ajuda.

    Estara online amanhã online?


    .................................................................................
    Krsantos
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8443
    Registrado : 05/11/2009

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  Alexandre Neves 24/10/2013, 21:58

    Sim. Amanhã à noite, estarei, se Deus quiser


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    krsantos
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 57
    Registrado : 04/01/2013

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  krsantos 24/10/2013, 23:23

    Amigo, editei uma imagem com o resultado que preciso.
    Veja se ficou um pouco mais claro.

    Ta quase lá...


    .................................................................................
    Krsantos
    avatar
    Convidado
    Convidado


    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  Convidado 25/10/2013, 00:18

    Grande Alexandre... Prazer vê-lo por aqui...
    Meus conhecimentos em TreeViem foram conseguidos através de uma ajuda tua.. quando eu tentava adicionar o terceiro nó...

    Kr... no exemplo que fiz.. qual a ordem das tabelas?
    e qual dos formulários o 1 ou o 2?

    Cumpriementos.
    avatar
    Convidado
    Convidado


    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  Convidado 25/10/2013, 00:27

    Neste último exemplo que me enviaste baseado no que fiz.. as informaçòes das consultas estão ok?

    Classe >> Fornecedor >> Descricao >> NomeArquivo

    O relacionamento está correto?

    Cumprimentos.
    avatar
    krsantos
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 57
    Registrado : 04/01/2013

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  krsantos 25/10/2013, 00:41

    Ola tudo bm!
    Sim a relacao esta correta.
    Porem estava dando erro de chave duplicada, precisa apenas corrigir probleminha.

    Agradeço muitos a vcs.


    .................................................................................
    Krsantos
    avatar
    Convidado
    Convidado


    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  Convidado 25/10/2013, 02:13


    Não.. a relação estava totalmente errada!!!!!!!
    E ai repousava o problema.



    Eu acho que merecia um prêmio por isso....Bem.. apenas acho heheheh
    Bem.. e somente se for como o print abaixo.. hehehe de novo...

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. KrSantos

    Bem agora vou repousar... Amanha nos falamos..

    Fui............
    avatar
    krsantos
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 57
    Registrado : 04/01/2013

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  krsantos 25/10/2013, 13:00

    Grande amigo Piloto, vocês são incríveis, tenho aprendido muito com aqui.

    A relacao dos sqls que estavam erradas?

    Conseguiu resolver o problema?
    Pela imagem é isso mesmo que preciso.
    Esses problema é sempre um quebra cabeça.
    Obrigado pela atencao.


    .................................................................................
    Krsantos
    avatar
    Convidado
    Convidado


    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  Convidado 25/10/2013, 13:21

    Vamos à origem do problema.. Como eu havia dito...

    A questão repousava no relacionamento...
    Não necessitamos de fazer as consultas para utilizar na treew... Faremos isto em SQL/VBA

    Pedi que fizesse para que pudessemos ter uma idéia da arvore visualmente para que ai sim fizessemos a tree.

    No relacionamento que fizeste.. não poderia ter registros duplicados pois daria o erro de chave não única.


    Veja o erro no seu relacionamento:
    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. KrSantoaTela1


    Veja agora o relacionamento correto, observe que a expansão das consulta exibirá a informação conforme deseja:

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. KrSantoaTela2

    Para resolver isto.. relacionei todos pelo campo Classe!!

    Como havia dito.. não necessitamos mais das consulta.. Apenas as criamos para que pudéssemos testar o relacionamento.. pois quando as consulta exibissem o resultado pretendido as fariamos em Sql/Vba..Veja as consulta em SQL/VBA:

    '==========================================================================================================================
    'PARA O PRIMEIRO NÓ
    '==========================================================================================================================
        'Seta o recordset para o primeiro nó
    StrSQL = "SELECT Resultado.Cod_Produto_Filho, Resultado.Classe From Resultado" _
            & " GROUP BY Resultado.Cod_Produto_Filho, Resultado.Classe;"

    '==========================================================================================================================
    'PARA O SEGUNDO NÓ
    '==========================================================================================================================
    'Seta o recordset para o segundo nó, observe que ele é filtrado pelo parâmetro do recordset anterior
    strSQL1 = "SELECT Resultado.Fornecedor, Resultado.Classe From Resultado" _
            & " WHERE [Classe] = '" & RsClasse!Classe & "' GROUP BY Resultado.Fornecedor, Resultado.Classe;"

    '==========================================================================================================================
    'PARA O TERCEIRO NÓ
    '==========================================================================================================================
    strSQL2 = "SELECT Resultado.Cod_Produto_Filho, Resultado.Classe, Resultado.Fornecedor, Resultado.Desc" _
            & " From Resultado  WHERE Classe = '" & rsFornecedor!Classe & "'" _
            & "GROUP BY Resultado.Cod_Produto_Filho, Resultado.Classe, Resultado.Fornecedor, Resultado.Desc;"


    '==========================================================================================================================
    'PARA O QUARTO NÓ
    '==========================================================================================================================
    strSQL3 = "SELECT Resultado.ID, Resultado.Classe, Resultado.Cod_Produto_Filho, Resultado.Fornecedor, Resultado.Código," _
            & "Resultado.Desc, Resultado.Nome_Arq, Resultado.Revisão, Resultado.DataModArq" _
            & " From Resultado  WHERE Classe = '" & rsDescricao!Classe & "'" _
            & " GROUP BY Resultado.ID, Resultado.Classe, Resultado.Cod_Produto_Filho, Resultado.Fornecedor, Resultado.Código," _
            & "Resultado.Desc, Resultado.Nome_Arq, Resultado.Revisão, Resultado.DataModArq;"




    Eis o Baita:



    https://dl.dropboxusercontent.com/u/26441349/KrSantos_TreeView_PROJETO_Final_Piloto.rar

    Cumprimentos.
    avatar
    krsantos
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 57
    Registrado : 04/01/2013

    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  krsantos 25/10/2013, 13:54

    Sensacional Piloto, muito bom.

    Porém existe um pequeno probleminha.

    Quando eu entro na tabela Desenho e troco o fornecedor do ID 5509 com um outro qualquer ex: "APLLE", ele emite o mesmo erro de chave duplicada.

    Meu que coisa.


    .................................................................................
    Krsantos
    avatar
    Convidado
    Convidado


    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  Convidado 25/10/2013, 13:59

    Amigão.. o problema são com os dados.. e relaciomanto..não poderá existir registros duplicados...
    Infelizmente.. tem que ser único o registro por fornecedor/classe/descrição.

    Se não tiver como diferenciá-los não terá como fazer.


    Veja o relcionamento com as tabelas:
    avatar
    Convidado
    Convidado


    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  Convidado 25/10/2013, 14:05

    Voce vai ter que rever a questão do relacionamento entre as tabelas Desenho e Desenho ref...

    Se abrir as consulta modificando o fornecedor do id como falou.. observe que na consulta descrição.. duplica itens.. é isto que não pode..

    Conteúdo patrocinado


    [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela. Empty Re: [Resolvido]Preencher um TreeView com resultado de um consulta ou tabela.

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 19/3/2024, 06:07