none
Mandar a inicio cuando llegue a ultimo registro en informe access RRS feed

  • Pregunta

  • Tengo un informe el cual deseo recorrer en automatico para poner un display. Tengo esta sentencia pero no me funciona en informe solo en formulario:

    If Me.RecordsetClone.RecordCount = Me.SelTop Then
            DoCmd.GoToRecord , , acFirst
        Else
            DoCmd.GoToRecord , , acNext
        End If
    
    Cual seria la mejor manera de hacerlo?


    Luis Carlos Lugo

    jueves, 8 de septiembre de 2016 18:33

Todas las respuestas

  • Hola

    El objeto recordset tiene dos propiedades, BOF y EOF, de tipo booleano. La primera es cuando la posición es anterior al primer registro, la segunda es cuando la posición es posterior al último registro. Puedes usar ésta última para detectar sí estás al final del recordset.

    Pero no puedes usar recordsetclone para acceder al recordset de tu formulario o informe. Tienes que usarlo para asignar el recorset a una variiable y trabajar con ella

    dim MiRS as DAO.Recordset

    Set MiRS=me.RecordsetClone

    If MiRS.BOF then

    docmd.GotoRecord,,acFirst

    ...

    Salu2,



    José Mª Fueyo

    viernes, 9 de septiembre de 2016 6:40
  • Me indica que no se encontro el metodo o dato miembro.

    Dim MiRS As DAO.Recordset

    Set MiRS = Me.RecordsetClone

    If MiRS.BOF Then

    DoCmd.GoToRecord , , acFirst



    Luis Carlos Lugo

    viernes, 9 de septiembre de 2016 14:35
  • Hola

    ¿Que versión de Access utilizas?

    Salu2,


    José Mª Fueyo

    viernes, 9 de septiembre de 2016 17:24
  • Me acabo de fijar que lo que quieres hacer lo quieres hacer con un informe. 

    No le veo mucho sentido ¿que quieres hacer, comprobar sí tiene registros? ¿sacar un msgbox con el número de los mismos?

    Salu2,


    José Mª Fueyo

    viernes, 9 de septiembre de 2016 17:30
  • Uso Access 2016, lo que intento es hacer un display para unidades disponibles, por lo que debe de mostrar en una pantalla con un timer el desplazamiento. En formulario no es alternativa porque no permite subform los formularios continuos.


    Luis Carlos Lugo

    viernes, 9 de septiembre de 2016 20:41
  • Acabo de agregar unas sentencias si cambia de posicion pero cuando llega al final no lo regresa:
    Dim rs As DAO.Recordset
       Set rs = CurrentDb.OpenRecordset("Display")
    On Error GoTo Err_Next_Record
    
    With rs
      If .AbsolutePosition = .RecordCount Then
    
            DoCmd.GoToRecord , , acFirst
        
      Else
      
            DoCmd.GoToRecord , , acNext
      End If
    End With
    
    Exit_Next_Record:
        Exit Sub
    
    Err_Next_Record:
        MsgBox Err.Description
        Resume Exit_Next_Record



    Luis Carlos Lugo

    lunes, 12 de septiembre de 2016 22:46
  • Hola

    Dudo que un informe sea tu solución. Un informe es algo estático, una vez generado no lo puedes cambiar a menos que lo cierres y lo vuelvas a ejecutar.

    Respecto a que un formulario continuo no acepte subformularios, discrepo. Puedes usarlos, pero o bien lo enlazas a algún campo mostrado en cada registro (con lo cual se filtra por cada registro), o lo dejas sin enlazar y te muestra constantemente lo mismo.

    Saludos,


    José Mª Fueyo

    martes, 13 de septiembre de 2016 7:22
  • Cuando se inserta el subformulario en el formulario continuo en automatico cambia la vista a formulario unico. La manera que he encontrado es a traves de un cuadro de lista, sin embargo no se me ocurreo como filtrarlos, si paso un parametro de filtro en el cuadro de lista me filtra todos los valores en relacion al primer registro:

    [Formularios]![Disponible Display]![Id_Vehiculos]


    Luis Carlos Lugo

    martes, 13 de septiembre de 2016 16:10
  • Al final no he logrado nada solo he podido cargar el contenido en un listbox hace una funcion similar pero no sirve asi:
    Private Sub Form_Load()
    Me.lstItems.RowSource = "SELECT Movi_Operaciones.Id, Movi_Operaciones.Consec, Movi_Operaciones.Descripcion, Movi_Operaciones.Inicio, Movi_Operaciones.Programada, Movi_Operaciones.Final FROM Movi_Operaciones WHERE Movi_Operaciones.Consec like '*" & Me.Id_Vehiculo & "*'"
    
    End Sub
    
    Private Sub Form_Timer()
    If Me.RecordsetClone.RecordCount = Me.SelTop Then
            
            DoCmd.GoToRecord , , acFirst
            Me.lstItems.RowSource = "SELECT Movi_Operaciones.Id, Movi_Operaciones.Consec, Movi_Operaciones.Descripcion, Movi_Operaciones.Inicio, Movi_Operaciones.Programada, Movi_Operaciones.Final FROM Movi_Operaciones WHERE Movi_Operaciones.Consec like '*" & Me.Id_Vehiculo & "*'"
       
        Else
            
            DoCmd.GoToRecord , , acNext
            Me.lstItems.RowSource = "SELECT Movi_Operaciones.Id, Movi_Operaciones.Consec, Movi_Operaciones.Descripcion, Movi_Operaciones.Inicio, Movi_Operaciones.Programada, Movi_Operaciones.Final FROM Movi_Operaciones WHERE Movi_Operaciones.Consec like '*" & Me.Id_Vehiculo & "*'"
      
        End If
    Se actualizan todos los listbox en base al valor del "Id_Vechiculo" pero necesito que lo haga similar a un subform.

    Luis Carlos Lugo

    martes, 13 de septiembre de 2016 18:20