Abrir formulario en registro seleccionado en un Treview

19/06/2010 - 00:38 por maya85 | Informe spam
Hola a todos necesito de su ayuda, He creado un Treview en el cual
muestro las fechas de las rutas de los choferes, los nodos estan de la
siguiente forma.

fecha
- detalle ruta

Lo que necesito hacer es abrir el formulario ruta en el registro
seleccionado en el Nodo 1 o Nodo 2, tanto el treview, como el
formulario contienen el campo IdRuta, abajo les coloco el codigo con
el cual cargo el Treview.


On Error Resume Next
Dim i As Integer, _
rs As DAO.Recordset, _
ndActual As Node



'On Error GoTo Form_Open_TratamientoErrores
Set ndActual = Me.TreeView2.Nodes.Add(, , "Rutas de Choferes",
"Rutas de Choferes") 'Añadimos el primer nodo correspondiente al nivel
0
ndActual.Bold = True




'AÑADIENDO FECHAS
Set rs = CurrentDb.OpenRecordset("SELECT fecha, fecha FROM
Treviewnodo1fecha ORDER BY fecha")
If Not rs.EOF And Not rs.BOF Then
rs.MoveLast
rs.MoveFirst
For i = 1 To rs.RecordCount
Set ndActual = Me.TreeView2.Nodes.Add("Rutas de Choferes",
tvwChild, "C" & rs!Fecha, rs!Fecha)
ndActual.Tag = "Fecha: " & rs!Fecha
rs.MoveNext
Next i
rs.MoveFirst
Set ndActual = Me.TreeView2.Nodes("C" & rs!Fecha)
ndActual.EnsureVisible
rs.Close
Set ndActual = Nothing
Else
rs.Close
Set rs = Nothing
Exit Sub
End If


'AÑADIENDO Rutas
Set rs = CurrentDb.OpenRecordset("SELECT fecha, NombreEmpleado,
IdRuta FROM Treview2rutemple ORDER BY IdRuta, Fecha, IdRuta")
If Not rs.EOF And Not rs.BOF Then
rs.MoveLast
rs.MoveFirst
For i = 1 To rs.RecordCount
Set ndActual = Me.TreeView2.Nodes.Add("C" & rs!Fecha,
tvwChild, "P" & rs!IdRuta, "Ruta: " & rs!IdRuta & " con Fecha: " & rs!
Fecha & " Empleado: " & rs!NombreEmpleado)
ndActual.Tag = "Ruta: " & rs!IdRuta & " con Fecha: " & rs!
Fecha & " del " & Me.TreeView2.Nodes("C" & rs!Fecha).Tag
rs.MoveNext
Next i
rs.Close
Set ndActual = Nothing
Else
rs.Close
End If





'AÑADIENDO DetallesRutas
'Set rs = CurrentDb.OpenRecordset("SELECT idPedido, IdProducto
FROM [Detalles de Pedidos] ORDER BY idPedido, IdProducto")
Set rs = CurrentDb.OpenRecordset("SELECT
[Treview3detalleClienterut].IdRuta,
[Treview3detalleClienterut].Cliente, " & _
"Clientes.NombreEmpresa,
[Treview3detalleClienterut].Accion " & _
"FROM [Treview3detalleClienterut]
INNER JOIN Clientes ON [Treview3detalleClienterut].Cliente Clientes.IdCliente " & _
"ORDER BY
[Treview3detalleClienterut].IdRuta, Clientes.NombreEmpresa")
If Not rs.EOF And Not rs.BOF Then
rs.MoveLast
rs.MoveFirst
For i = 1 To rs.RecordCount
Set ndActual = Me.TreeView2.Nodes.Add("P" & rs!IdRuta,
tvwChild, "R" & rs!CLIENTE & "|" & rs!IdRuta, rs!NombreEmpresa & "
Realizar " & rs!Accion)
ndActual.Tag = "Cliente: " & rs!NombreEmpresa & " del " &
Me.TreeView2.Nodes("P" & rs!IdRuta).Tag
rs.MoveNext
Next i
rs.Close
Set ndActual = Nothing
Else
rs.Close
End If

Set rs = Nothing

Form_Open_Salir:
On Error GoTo 0
Exit Sub

Form_Open_TratamientoErrores:
If err.Number = 3265 Then Resume Next
MsgBox "Error " & err.Number & " en proc.: Form_Open de Documento
VBA: Form_frmCuadroDialogo (" & err.Description & ")"
Resume Form_Open_Salir


Ojala me puedan ayudar,


Saludos a todos
 

Leer las respuestas

#1 maya85
24/06/2010 - 19:23 | Informe spam
On 18 jun, 17:38, maya85 wrote:
Hola a todos necesito de su ayuda, He creado un Treview en el cual
muestro las fechas de las rutas de los choferes, los nodos estan de la
siguiente forma.

fecha
 -- id ruta
      - detalle ruta

Lo que necesito hacer es abrir el formulario ruta en el registro
seleccionado en el Nodo 1 o Nodo 2, tanto el treview, como el
formulario contienen el campo IdRuta, abajo les coloco el codigo con
el cual cargo el Treview.

  On Error Resume Next
    Dim i As Integer, _
        rs As DAO.Recordset, _
        ndActual As Node

'On Error GoTo Form_Open_TratamientoErrores
    Set ndActual = Me.TreeView2.Nodes.Add(, , "Rutas de Choferes",
"Rutas de Choferes") 'Añadimos el primer nodo correspondiente al nivel
0
    ndActual.Bold = True

     'AÑADIENDO FECHAS
    Set rs = CurrentDb.OpenRecordset("SELECT fecha, fecha FROM
Treviewnodo1fecha ORDER BY fecha")
    If Not rs.EOF And Not rs.BOF Then
        rs.MoveLast
        rs.MoveFirst
        For i = 1 To rs.RecordCount
            Set ndActual = Me.TreeView2.Nodes.Add("Rutas de Choferes",
tvwChild, "C" & rs!Fecha, rs!Fecha)
            ndActual.Tag = "Fecha: " & rs!Fecha
            rs.MoveNext
        Next i
        rs.MoveFirst
        Set ndActual = Me.TreeView2.Nodes("C" & rs!Fecha)
        ndActual.EnsureVisible
        rs.Close
        Set ndActual = Nothing
    Else
        rs.Close
        Set rs = Nothing
       Exit Sub
    End If

    'AÑADIENDO Rutas
    Set rs = CurrentDb.OpenRecordset("SELECT fecha, NombreEmpleado,
IdRuta FROM Treview2rutemple ORDER BY IdRuta, Fecha, IdRuta")
    If Not rs.EOF And Not rs.BOF Then
        rs.MoveLast
        rs.MoveFirst
        For i = 1 To rs.RecordCount
            Set ndActual = Me.TreeView2.Nodes.Add("C" & rs!Fecha,
tvwChild, "P" & rs!IdRuta, "Ruta: " & rs!IdRuta & " con Fecha: " & rs!
Fecha & " Empleado: " & rs!NombreEmpleado)
            ndActual.Tag = "Ruta: " & rs!IdRuta & " con Fecha: " & rs!
Fecha & " del " & Me.TreeView2.Nodes("C" & rs!Fecha).Tag
            rs.MoveNext
        Next i
        rs.Close
        Set ndActual = Nothing
    Else
        rs.Close
    End If

    'AÑADIENDO DetallesRutas
    'Set rs = CurrentDb.OpenRecordset("SELECT idPedido, IdProducto
FROM [Detalles de Pedidos] ORDER BY idPedido, IdProducto")
    Set rs = CurrentDb.OpenRecordset("SELECT
[Treview3detalleClienterut].IdRuta,
[Treview3detalleClienterut].Cliente, " & _
                                    "Clientes.NombreEmpresa,
[Treview3detalleClienterut].Accion " & _
                                    "FROM [Treview3detalleClienterut]
INNER JOIN Clientes ON [Treview3detalleClienterut].Cliente > Clientes.IdCliente " & _
                                    "ORDER BY
[Treview3detalleClienterut].IdRuta, Clientes.NombreEmpresa")
    If Not rs.EOF And Not rs.BOF Then
        rs.MoveLast
        rs.MoveFirst
        For i = 1 To rs.RecordCount
            Set ndActual = Me.TreeView2.Nodes.Add("P" & rs!IdRuta,
tvwChild, "R" & rs!CLIENTE & "|" & rs!IdRuta, rs!NombreEmpresa & "
Realizar  " & rs!Accion)
            ndActual.Tag = "Cliente: " & rs!NombreEmpresa & " del " &
Me.TreeView2.Nodes("P" & rs!IdRuta).Tag
            rs.MoveNext
        Next i
        rs.Close
        Set ndActual = Nothing
    Else
        rs.Close
    End If

    Set rs = Nothing

Form_Open_Salir:
    On Error GoTo 0
    Exit Sub

Form_Open_TratamientoErrores:
    If err.Number = 3265 Then Resume Next
    MsgBox "Error " & err.Number & " en proc.: Form_Open de Documento
VBA: Form_frmCuadroDialogo (" & err.Description & ")"
    Resume Form_Open_Salir

Ojala me puedan ayudar,

Saludos a todos



Hola de nuevo coloque lo siguiente con lo cual ya consigo abrir el
formulario Rutaas.

Private Sub TreeView2_NodeClick(ByVal Node As Object)
On Error Resume Next

Select Case left(Node.Key, 1)
Case "p"
DoCmd.OpenForm "Rutaas"
End Select
End Sub

Pero aun no consigo que abra en el registro seleccionado en el
treview.

Tendran alguna idea que me pueda servir

El codigo completo es el siguiente.

Function NivelSeleccionado(nd As Node) As String
Select Case left(nd.Key, 1)
Case "C"
NivelSeleccionado = "Fecha"
Case "P"
NivelSeleccionado = "Rutas"
Case "R"
NivelSeleccionado = "Detalle Rutas"
End Select

End Function





Private Sub Form_Open(Cancel As Integer)
On Error Resume Next
Dim i As Integer, _
rs As DAO.Recordset, _
ndActual As Node



'On Error GoTo Form_Open_TratamientoErrores
Set ndActual = Me.TreeView2.Nodes.Add(, , "Rutas de Choferes",
"Rutas de Choferes") 'Añadimos el primer nodo correspondiente al nivel
0
ndActual.Bold = True




'AÑADIENDO FECHAS
Set rs = CurrentDb.OpenRecordset("SELECT fecha, fecha FROM
Treviewnodo1fecha ORDER BY fecha")
If Not rs.EOF And Not rs.BOF Then
rs.MoveLast
rs.MoveFirst
For i = 1 To rs.RecordCount
Set ndActual = Me.TreeView2.Nodes.Add("Rutas de Choferes",
tvwChild, "C" & rs!Fecha, rs!Fecha)
ndActual.Tag = "Fecha: " & rs!Fecha
rs.MoveNext
Next i
rs.MoveFirst
Set ndActual = Me.TreeView2.Nodes("C" & rs!Fecha)
ndActual.EnsureVisible
rs.Close
Set ndActual = Nothing
Else
rs.Close
Set rs = Nothing
Exit Sub
End If


'AÑADIENDO Rutas
Set rs = CurrentDb.OpenRecordset("SELECT fecha, NombreEmpleado,
IdRuta FROM Treview2rutemple ORDER BY IdRuta, Fecha, IdRuta")
If Not rs.EOF And Not rs.BOF Then
rs.MoveLast
rs.MoveFirst
For i = 1 To rs.RecordCount
Set ndActual = Me.TreeView2.Nodes.Add("C" & rs!Fecha,
tvwChild, "P" & rs!IdRuta, "Ruta: " & rs!IdRuta & " con Fecha: " & rs!
Fecha & " Empleado: " & rs!NombreEmpleado)
ndActual.Tag = "Ruta: " & rs!IdRuta & " con Fecha: " & rs!
Fecha & " del " & Me.TreeView2.Nodes("C" & rs!Fecha).Tag
rs.MoveNext
Next i
rs.Close
Set ndActual = Nothing
Else
rs.Close
End If





'AÑADIENDO DetallesRutas
'Set rs = CurrentDb.OpenRecordset("SELECT idPedido, IdProducto
FROM [Detalles de Pedidos] ORDER BY idPedido, IdProducto")
Set rs = CurrentDb.OpenRecordset("SELECT
[Treview3detalleClienterut].IdRuta,
[Treview3detalleClienterut].Cliente, " & _
"Clientes.NombreEmpresa,
[Treview3detalleClienterut].Accion " & _
"FROM [Treview3detalleClienterut]
INNER JOIN Clientes ON [Treview3detalleClienterut].Cliente Clientes.IdCliente " & _
"ORDER BY
[Treview3detalleClienterut].IdRuta, Clientes.NombreEmpresa")
If Not rs.EOF And Not rs.BOF Then
rs.MoveLast
rs.MoveFirst
For i = 1 To rs.RecordCount
Set ndActual = Me.TreeView2.Nodes.Add("P" & rs!IdRuta,
tvwChild, "R" & rs!CLIENTE & "|" & rs!IdRuta, rs!NombreEmpresa & "
Realizar " & rs!Accion)
ndActual.Tag = "Cliente: " & rs!NombreEmpresa & " del " &
Me.TreeView2.Nodes("P" & rs!IdRuta).Tag
rs.MoveNext
Next i
rs.Close
Set ndActual = Nothing
Else
rs.Close
End If

Set rs = Nothing

Form_Open_Salir:
On Error GoTo 0
Exit Sub

Form_Open_TratamientoErrores:
If err.Number = 3265 Then Resume Next
MsgBox "Error " & err.Number & " en proc.: Form_Open de Documento
VBA: Form_frmCuadroDialogo (" & err.Description & ")"
Resume Form_Open_Salir

End Sub


Private Sub TreeView2_NodeClick(ByVal Node As Object)
On Error Resume Next

Select Case left(Node.Key, 1)
Case "p"
DoCmd.OpenForm "Rutaas"
End Select
End Sub



Saludos y gracias

Preguntas similares