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

Preguntas similare

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
Respuesta Responder a este mensaje
#2 maya85
25/06/2010 - 01:11 | Informe spam
On 24 jun, 12:23, maya85 wrote:
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



Hola al final lo resolvi haciendo formularios con subformularios en
vista hoja de datos y relacionando los id en el evento al hacer doble
clic para abrir el form en el registro seleccionado.

Gracias se puede cerrar este post
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida