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


    TreeView com Checkboxes - Como utilizar os dados selecionados?

    avatar
    miguel.serra
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 50
    Registrado : 20/01/2011

    TreeView com Checkboxes - Como utilizar os dados selecionados? Empty TreeView com Checkboxes - Como utilizar os dados selecionados?

    Mensagem  miguel.serra 12/5/2013, 23:57

    Olá. Minha dúvida deve ser muito tola, mas o fato é que não sei programar em VBA.
    Adaptei um código de uma TreeView, obtida aqui mesmo no fórum fornecida pelo usuário "PILOTO" Link
    Estou fazendo com que ela possa ser utilizada facilmente para diversos fins. Dentre eles, uma TreeView com CheckBoxes.

    Gostaria de criar um botão "Botao1" que, quando clicado, enviasse as informações das Tags dos dados selecionados da minha "MyTreeView", por exemplo, para uma Caixa de Texto "Texto1", todos separados por ponto e vírgula, exemplo: tag1; tag7; tag23; etc
    Não encontro nada da Net a respeito de como utilizar estas Checkboxes

    Alguém poderia ajudar?!

    O código é o seguinte(por enquanto!):
    Código:
    '====================================
    'Funções para treeView
    '------------------------------------
    ' Define public objects
    Dim rsPrimeira As DAO.Recordset
    Dim rsSegunda As DAO.Recordset
    Dim rsTerceira As DAO.Recordset
    Dim rsQuarta As DAO.Recordset
    Dim StrSQL As String
    Dim Selecionado As Boolean

    Private Sub Form_Load()

    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

    Private Sub TreeInit()

    Dim trvTree As Control
    Dim imgList As Control
    Dim nodObject As Node
    Dim I As Integer
    Dim rcount As Integer
    Dim strPrimeira As String
    Dim strSegunda As String
    Dim strTerceira As String
    Dim strQuarta As String
    Dim Db As DAO.Database

    Dim TabConsult1 As String
    Dim TabConsult2 As String
    Dim TabConsult3 As String
    Dim TabConsult4 As String
    Dim CampoTxtInit1 As String
    Dim CampoTxtInit2 As String
    Dim CampoTxtInit3 As String
    Dim CampoTxtInit4 As String
    Dim CampoTxtDescr1 As String
    Dim CampoTxtDescr2 As String
    Dim CampoTxtDescr3 As String
    Dim CampoTxtDescr4 As String
    Dim Chave1 As String
    Dim Chave2 As String
    Dim Chave3 As String
    Dim Chave4 As String
    Dim ChaveRelacional2x1 As String
    Dim ChaveRelacional3x2 As String
    Dim ChaveRelacional4x3 As String

    Dim TreeObjeto As String
    Dim TreeChk As String
    Dim TreeChkStats As String

    'Não esqueça de configurar a TreeView no próprio Formulário,
    'clicando com o botão direito do mouse, em modo Design, e
    'escolhendo "Objeto TreeCtrl/Properties"

    'Aqui deve-se informar o nome da TreeView que está no formulário
    TreeObjeto = "MyTreeView" 'Nome do objeto da TreeView

    'Aqui deve-se informar as Tabelas ou Consultas que irão popular a TreeView
    TabConsult1 = "1_CLIENTE" 'Nome da Tabela ou Consulta que irá popular o nível 1 da Treeview
    TabConsult2 = "3_CONTRATOS" 'Nome da Tabela ou Consulta que irá popular o nível 2 da Treeview
    TabConsult3 = "4_PROJETOS" 'Nome da Tabela ou Consulta que irá popular o nível 3 da Treeview
    TabConsult4 = "CONSUNIDPROJ" 'Nome da Tabela ou Consulta que irá popular o nível 4 da Treeview

    'Aqui deve-se informar os nomes dos campos das Tabelas ou Consultas, conforme a hierarquia da TreeView
    Chave1 = "CLIENTE_PK" 'Nome do campo chave (que está na Tabela ou Consulta) do nível 1 da Treeview
    Chave2 = "CodCONTRATOS_PK" 'Nome do campo chave (que está na Tabela ou Consulta) do nível 2 da Treeview
    Chave3 = "CodPROJETOS_PK" 'Nome do campo chave (que está na Tabela ou Consulta) do nível 3 da Treeview
    Chave4 = "INT_PK" 'Nome do campo chave (que está na Tabela ou Consulta) do nível 4 da Treeview

    ChaveRelacional2x1 = "CodCLIENTE_FK" 'Campo do Nível 2 que coincide com o campo chave do nível 1
    ChaveRelacional3x2 = "CodCONTRATOS_FK" 'Campo do Nível 3 que coincide com o campo chave do nível 2
    ChaveRelacional4x3 = "CodPROJETOS_FK" 'Campo do Nível 4 que coincide com o campo chave do nível 2

    CampoTxtInit1 = "CLIENTE_PK" 'Campo XYZ do texto "XYZ - DESCRIÇÃOABC" que constará no texto do nível 1 da TreeView
    CampoTxtInit2 = "CONTRATO" 'Campo XYZ do texto "XYZ - DESCRIÇÃOABC" que constará no texto do nível 2 da TreeView
    CampoTxtInit3 = "PROJETO" 'Campo XYZ do texto "XYZ - DESCRIÇÃOABC" que constará no texto do nível 3 da TreeView
    CampoTxtInit4 = "UNIDADE" 'Campo XYZ do texto "XYZ - DESCRIÇÃOABC" que constará no texto do nível 4 da TreeView

    'Nota para os campos abaixo: Caso não haja necessidade de dois campos para a descrição, deixar como ""
    CampoTxtDescr1 = "NOME" 'Campo DESCRIÇÃOABC do texto "XYZ - DESCRIÇÃOABC" que constará no texto do nível 1 da TreeView
    CampoTxtDescr2 = "DESCRIÇÃO" 'Campo DESCRIÇÃOABC do texto "XYZ - DESCRIÇÃOABC" que constará no texto do nível 2 da TreeView
    CampoTxtDescr3 = "DESCRIÇÃO" 'Campo DESCRIÇÃOABC do texto "XYZ - DESCRIÇÃOABC" que constará no texto do nível 3 da TreeView
    CampoTxtDescr4 = "UNIDADE" 'Campo DESCRIÇÃOABC do texto "XYZ - DESCRIÇÃOABC" que constará no texto do nível 4 da TreeView


    'A partir daqui não há necessidade de alterações de código.

        'seta o banco de dados
        Set Db = CurrentDb
        Set trvTree = Me(TreeObjeto) 'Me.TreeView0
        '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 rsPrimeira = Db.OpenRecordset(TabConsult1, dbOpenSnapshot)
        rsPrimeira.MoveLast
        rcount = rsPrimeira.RecordCount
        rsPrimeira.MoveFirst
       
    'executa o loop pelo recorset adicionando a lista de dados principal à treeview
    Do While Not rsPrimeira.EOF
        strPrimeira = rsPrimeira.Fields(CampoTxtInit1)
        'strPrimeira = rsPrimeira!CLIENTE_PK
        'Concatena os campos para criar o texto do nó
        If Len(Trim(Nz(rsPrimeira.Fields(CampoTxtDescr1)))) > 0 Then
            strPrimeira = Format(strPrimeira, ">") & " - " & rsPrimeira.Fields(CampoTxtDescr1)
        End If
    'Adiciona o ícone do tipo de conta no Treeview. O número representa o desenho escolhido
    Set nodObject = .Add(, , "A" & CStr(rsPrimeira.Fields(CampoTxtInit1)), strPrimeira, 0)
    'cria o nó e a propriedade tag
    trvTree.Nodes("A" & rsPrimeira.Fields(Chave1)).Tag = rsPrimeira.Fields(Chave1)
    '==========================================================================================================================
    'PARA O SEGUNDO NÓ
    '==========================================================================================================================
    'Seta o recordset para o segundo nó, observe que ele é filtrado pelo parâmetro do recordset anterior
    Set rsSegunda = Db.OpenRecordset("SELECT * FROM " & TabConsult2 & " WHERE [" & ChaveRelacional2x1 & "] = '" & rsPrimeira.Fields(Chave1) & "'", dbOpenSnapshot)
    'executa o loop pelo recorset adicionando a lista de dados secundária à treeview
    Do While Not rsSegunda.EOF
        strSegunda = rsSegunda.Fields(CampoTxtInit2)
        'se o recordset tiver valor nulo vai para a linha NoSegunda
        If IsNull(rsSegunda.Fields(Chave2)) Then GoTo NoSegunda
        If Len(Trim(Nz(rsSegunda.Fields(CampoTxtDescr2)))) > 0 Then
            strSegunda = Format(strSegunda, ">") & " - " & rsSegunda.Fields(CampoTxtDescr2)
        End If
    'Adiciona os nós conforme o segundo recordset
    Set nodObject = .Add("A" & rsPrimeira.Fields(Chave1), tvwChild, "B" & rsSegunda.Fields(Chave2), strSegunda, 0)
    '.. cria o nó e a propriedade tag
    trvTree.Nodes("B" & rsSegunda.Fields(Chave2)).Tag = rsSegunda.Fields(Chave2)

    '==========================================================================================================================
    'PARA O TERCEIRO NÓ
    '==========================================================================================================================
    Set rsTerceira = Db.OpenRecordset("SELECT * FROM " & TabConsult3 & " WHERE [" & ChaveRelacional3x2 & "] = '" & rsSegunda.Fields(Chave2) & "'", dbOpenSnapshot)
        Do While Not rsTerceira.EOF
        strTerceira = rsTerceira.Fields(CampoTxtInit3)
        'se o recordset tiver valor nulo vai para a linha NoTerceira
        If IsNull(rsTerceira.Fields(Chave3)) Then GoTo NoTerceira
            'Concatena os campos para criar o texto do nó
            If Len(Trim(Nz(rsTerceira.Fields(CampoTxtDescr3)))) > 0 Then
                strTerceira = Format(strTerceira, ">") & " - " & rsTerceira.Fields(CampoTxtDescr3)
        End If
    'Adiciona os nós conforme o segundo recordset
    Set nodObject = .Add("B" & rsSegunda.Fields(Chave2), tvwChild, "C" & rsTerceira.Fields(Chave3), strTerceira, 0)
    'cria o nó e a propriedade tag
    trvTree.Nodes("C" & rsTerceira.Fields(Chave3)).Tag = rsTerceira.Fields(Chave3)
    '-------------------------------------------------------------------------------------------------------------------------


    '==========================================================================================================================
    'PARA O QUARTO NÓ
    '==========================================================================================================================
    Set rsQuarta = Db.OpenRecordset("SELECT * FROM " & TabConsult4 & " WHERE [" & ChaveRelacional4x3 & "] = '" & rsTerceira.Fields(Chave3) & "'", dbOpenSnapshot)
        Do While Not rsQuarta.EOF
        'se o recordset tiver valor nulo vai para a linha NoQuarta
        If IsNull(rsQuarta.Fields(Chave4)) Then GoTo NoQuarta
            'Concatena os campos para criar o texto do nó
            If Len(Trim(Nz(rsQuarta.Fields(CampoTxtDescr4)))) > 0 Then
                strQuarta = rsQuarta.Fields(CampoTxtDescr4)
        End If
    'Adiciona os nós conforme o segundo recordset
    Set nodObject = .Add("C" & rsTerceira.Fields(Chave3), tvwChild, "D" & rsQuarta.Fields(Chave4), strQuarta, 0)
    'cria o nó e a propriedade tag
    trvTree.Nodes("D" & rsQuarta.Fields(Chave4)).Tag = rsQuarta.Fields(Chave4)
    '-------------------------------------------------------------------------------------------------------------------------

    NoQuarta:
        rsQuarta.MoveNext
        Loop
    NoTerceira:
        rsTerceira.MoveNext
        Loop
    NoSegunda:
        rsSegunda.MoveNext
        Loop
        rsPrimeira.MoveNext
        Loop

    End With

        'Limpa os recordset's envolvidos
        Set rsPrimeira = Nothing
        Set rsSegunda = Nothing
        Set rsTerceira = Nothing
        Set rsQuarta = Nothing
       
    End Sub
    avatar
    miguel.serra
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 50
    Registrado : 20/01/2011

    TreeView com Checkboxes - Como utilizar os dados selecionados? Empty Re: TreeView com Checkboxes - Como utilizar os dados selecionados?

    Mensagem  miguel.serra 15/5/2013, 22:58

    Boa noite! Será que alguém poderia ajudar?
    Seria apenas a instrução que devo colocar no evento "Click" do botão...

    Obrigado!
    avatar
    miguel.serra
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 50
    Registrado : 20/01/2011

    TreeView com Checkboxes - Como utilizar os dados selecionados? Empty Re: TreeView com Checkboxes - Como utilizar os dados selecionados?

    Mensagem  miguel.serra 17/5/2013, 01:47

    Bom, acabei me virando. Para que possa ser útil pra mais alguém, segue o código do botão.
    Abraço

    Código:
    Private Sub BtEnvia_Click()
    Dim nod As node, str As String
    If MyTreeView.nodes.Count > 0 Then
    Set nod = MyTreeView.nodes(1)

    Do
    If nod.Checked Then str = str & IIf(str = "", "", "; ") & nod.Text
    If Not nod.Child Is Nothing Then
    Set nod = nod.Child
    ElseIf Not nod.Next Is Nothing Then
    Set nod = nod.Next
    Else
    Do
    Set nod = nod.Parent
    If Not nod Is Nothing Then
    If Not nod.Next Is Nothing Then
    Set nod = nod.Next
    Exit Do
    End If
    Else
    Exit Do
    End If
    Loop

    If nod Is Nothing Then Exit Do
    End If
    Loop

    Me.Texto3 = str

    End If
    End Sub

    Conteúdo patrocinado


    TreeView com Checkboxes - Como utilizar os dados selecionados? Empty Re: TreeView com Checkboxes - Como utilizar os dados selecionados?

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 29/4/2024, 14:40