revisar este codigo
bueno..me he bajado un programa en viasual basic el cual jala datos de access para putilizar un treeview pero ene ste codigo sale error donde dice:
Dim wks As Workspace
Option Explicit
Dim objTree As Control
Dim vDatos2 As Variant
Public Sub Populate(inArrayA As Variant)
'Entra un Array 2D
'Primera D: Campo
'Seguda D: Indice
'Ej. inArrayA(1,1)="100"
' inArrayA(2,1)="Capital"
Dim lCont As Long
Dim nodoX As Node
Dim lX As Long
Dim lProx As Long
Dim clave$, texto$
'Añade el primer nodo
'Como las claves van a ser números, le añado
'una N, de Nodo, sin más significados metafÃsicos.
clave = "N"
texto = "Plan"
Set nodoX = objTree.Nodes.Add(, , clave, texto)
nodoX.Expanded = True
lCont = 0
Do Until lCont > UBound(inArrayA, 2)
'Hacemos la clave y el texto
clave = "N" & CStr(inArrayA(0, lCont))
texto = CStr(inArrayA(0, lCont)) & " " & inArrayA(1, lCont)
'Comprobamos la longitud de los caracteres
lX = Len(nodoX.Key)
lProx = Len(clave)
Select Case lProx - lX
Case Is < 0 'Tiene menos caracteres
'El nodo actual pasa a ser el padre
Set nodoX = nodoX.Parent
'No añade nada
Case 0 'Tienen los mismos caracteres (mismo nivel)
'El nodo actual pasa a ser el añadido
Set nodoX = objTree.Nodes.Add(nodoX.Key, tvwNext, clave, texto)
nodoX.Expanded = True
lCont = lCont + 1
Case Is > 0 'Tiene más caracteres (Es un Hijo)
Set nodoX = objTree.Nodes.Add(nodoX.Key, tvwChild, clave, texto)
nodoX.Expanded = True
lCont = lCont + 1
End Select
Loop
End Sub
Private Sub cmdCargaDatos_Click()
'Esta parte de aquà no tiene importancia
'sólo hace un array desde una tabla de Access
'El array puede hacerse desde un archivo de texto
'o desde el mismo código
Dim wks As Workspace
Dim db As Database
Dim vDatos As Variant
Dim sUser As String, sPassword As String
sUser = DBEngine.Workspaces(0).UserName
sPassword = ""
Set wks = DBEngine.CreateWorkspace("wks", sUser, sPassword)
Set db = wks.OpenDatabase(App.Path & "Plan.mdb")
Dim sSQL$
Dim qrydatos As Recordset
sSQL = "SELECT * FROM Plan ORDER BY IDCuenta"
Set qrydatos = db.OpenRecordset(sSQL, dbOpenSnapshot)
If qrydatos.BOF And qrydatos.EOF Then
vDatos = vbNull
Else
qrydatos.MoveLast
qrydatos.MoveFirst
'No utilizar GetRows para una tabla grande
vDatos = qrydatos.GetRows(qrydatos.RecordCount)
End If
Set qrydatos = Nothing
db.Close
wks.Close
Set db = Nothing
Set wks = Nothing
vDatos2 = vDatos
cmdVerPlan.Enabled = True
cmdVerPlan.SetFocus
End Sub
Private Sub cmdVerPlan_Click()
Populate vDatos2
End Sub
Private Sub Form_Initialize()
Set objTree = TreeView1
End Sub
Private Sub Form_Resize()
Dim lScaleh&
lScaleh = ScaleHeight
With TreeView1
.Move 15, 15, ScaleWidth - 15, lScaleh - 500
End With
cmdCargaDatos.Top = lScaleh - 400
cmdVerPlan.Top = lScaleh - 400
End Sub
..................................................
haber si alguien me ayuda
Dim wks As Workspace
Option Explicit
Dim objTree As Control
Dim vDatos2 As Variant
Public Sub Populate(inArrayA As Variant)
'Entra un Array 2D
'Primera D: Campo
'Seguda D: Indice
'Ej. inArrayA(1,1)="100"
' inArrayA(2,1)="Capital"
Dim lCont As Long
Dim nodoX As Node
Dim lX As Long
Dim lProx As Long
Dim clave$, texto$
'Añade el primer nodo
'Como las claves van a ser números, le añado
'una N, de Nodo, sin más significados metafÃsicos.
clave = "N"
texto = "Plan"
Set nodoX = objTree.Nodes.Add(, , clave, texto)
nodoX.Expanded = True
lCont = 0
Do Until lCont > UBound(inArrayA, 2)
'Hacemos la clave y el texto
clave = "N" & CStr(inArrayA(0, lCont))
texto = CStr(inArrayA(0, lCont)) & " " & inArrayA(1, lCont)
'Comprobamos la longitud de los caracteres
lX = Len(nodoX.Key)
lProx = Len(clave)
Select Case lProx - lX
Case Is < 0 'Tiene menos caracteres
'El nodo actual pasa a ser el padre
Set nodoX = nodoX.Parent
'No añade nada
Case 0 'Tienen los mismos caracteres (mismo nivel)
'El nodo actual pasa a ser el añadido
Set nodoX = objTree.Nodes.Add(nodoX.Key, tvwNext, clave, texto)
nodoX.Expanded = True
lCont = lCont + 1
Case Is > 0 'Tiene más caracteres (Es un Hijo)
Set nodoX = objTree.Nodes.Add(nodoX.Key, tvwChild, clave, texto)
nodoX.Expanded = True
lCont = lCont + 1
End Select
Loop
End Sub
Private Sub cmdCargaDatos_Click()
'Esta parte de aquà no tiene importancia
'sólo hace un array desde una tabla de Access
'El array puede hacerse desde un archivo de texto
'o desde el mismo código
Dim wks As Workspace
Dim db As Database
Dim vDatos As Variant
Dim sUser As String, sPassword As String
sUser = DBEngine.Workspaces(0).UserName
sPassword = ""
Set wks = DBEngine.CreateWorkspace("wks", sUser, sPassword)
Set db = wks.OpenDatabase(App.Path & "Plan.mdb")
Dim sSQL$
Dim qrydatos As Recordset
sSQL = "SELECT * FROM Plan ORDER BY IDCuenta"
Set qrydatos = db.OpenRecordset(sSQL, dbOpenSnapshot)
If qrydatos.BOF And qrydatos.EOF Then
vDatos = vbNull
Else
qrydatos.MoveLast
qrydatos.MoveFirst
'No utilizar GetRows para una tabla grande
vDatos = qrydatos.GetRows(qrydatos.RecordCount)
End If
Set qrydatos = Nothing
db.Close
wks.Close
Set db = Nothing
Set wks = Nothing
vDatos2 = vDatos
cmdVerPlan.Enabled = True
cmdVerPlan.SetFocus
End Sub
Private Sub cmdVerPlan_Click()
Populate vDatos2
End Sub
Private Sub Form_Initialize()
Set objTree = TreeView1
End Sub
Private Sub Form_Resize()
Dim lScaleh&
lScaleh = ScaleHeight
With TreeView1
.Move 15, 15, ScaleWidth - 15, lScaleh - 500
End With
cmdCargaDatos.Top = lScaleh - 400
cmdVerPlan.Top = lScaleh - 400
End Sub
..................................................
haber si alguien me ayuda
