• Domingo 22 de Diciembre de 2024, 13:29

Autor Tema:  Llenar Un Control Data Tree  (Leído 1104 veces)

Manuel Castro Gómez

  • Miembro activo
  • **
  • Mensajes: 31
    • Ver Perfil
Llenar Un Control Data Tree
« en: Lunes 20 de Junio de 2005, 21:42 »
0
Buenas amigos de solocodigo.

En access-2000 tengo 1 tabla de PROGRAMAS y otra de SUBPROGRAMAS, los campos de la tabla de PROGRAMAS SON LOS SIGUIENTES(Codigo, NombrePrograma) y los de la 2da. tabla son (Codigo, CodProg, NombreSubprograma); en esta ùltima tabla CodProg contiene el Còdigo del programa al cual pertenece el Subprograma en cuestiòn.

Estoy tratando llenar un control DATA TREE que me muestre jeràrquicamente para cada programa los subprogramas respectivos.

A continuaciòn les expongo el còdigo VBA con el que pretendo hacer esto:

Private Sub Form_Load()

            Dim Cnn As ADODB.Connection, _

                RstProgramas As ADODB.Recordset, _

                RstSubProgramas As ADODB.Recordset, _

                NodX As Node, _

                StrCodPrograma As String

               

            Set Cnn = New ADODB.Connection

            Set RstProgramas = New ADODB.Recordset

            Set RstSubProgramas = New ADODB.Recordset

            Cnn.ConnectionString = "File Name=C:\Documents and Settings" _

                                             & "\mcastro.MARN" _

                                             & "\Escritorio" _

                                             & "\ConexionRac.udl"

            Cnn.Open

            RstProgramas.Source = "Tbl_Programas"

            RstProgramas.ActiveConnection = Cnn

            RstProgramas.Open

           

            TvwPrueba.Style = tvwTreelinesPlusMinusText

            TvwPrueba.LineStyle = tvwRootLines

           

            Do While Not RstProgramas.EOF

               Set NodX = TvwPrueba.Nodes.Add(, , RstProgramas  
                                                                   ("PRO_Codigo").Value, _
                                                                     RstProgramas"PRO_Nombre").Value)


                                               

               RstSubProgramas.Source = "SELECT * " _

                                      & "FROM   Tbl_SubProgramas " _

                                      & "WHERE  SPG_CodProg = '" & RstProgramas("PRO_Codigo").Value & "'"

               RstSubProgramas.ActiveConnection = Cnn

               RstSubProgramas.Open

               Do While Not RstSubProgramas.EOF

                  Set NodX = TvwPrueba.Nodes.Add(RstProgramas("PRO_Codigo").Value, _

                                                 tvwChild, _

                                                 RstSubProgramas("SPG_Codigo").Value, _

                                                 RstSubProgramas("SPG_SubPrograma").Value)

                  RstSubProgramas.MoveNext

               Loop

               

               RstSubProgramas.Close

               RstProgramas.MoveNext

            Loop

           

            Cnn.Close

End Sub

El problema que tengo es que en la lìnea que marquè en rojo me sale el siguiente error: CLAVE INVÀLIDA y no sè porquè ya que verifico y la clave (RstProgramas("PRO_Codigo").Value) es un campo texto de 4 posiciones tiene informaciòn.

Les agradezco de antemano cualquier ayuda al respecto y saludos a todos.