¿Cómo puedo hacer para avanzar y retroceder entre los formularios de de mis registros?

Numerobix.
En "formulario 2" con un cuadro de lista, al hacer click en uno de los registros, ej. El 15, se debe abrir el "formulario1" en ese mismo registro 15. Pero además se debe poder avanzar adelante y atrás en los registros. Alguna forma sencilla de hacerlo.

1 Respuesta

Respuesta
1
De nuevo alberto.
Bien, en el AL CARGAR del formulario 1 tendrías una función tal que parecida a esta:
          Dim strCriteria As String
          Dim rstID As Recordset
          ' Define search criteria
          strCriteria = "ID = " & VALORBUSCADO
          Set rstID = Me.Form.RecordsetClone
          ' Find the first occurrence
          rstID.FindFirst strCriteria
          If rstID.NoMatch Then
            MsgBox "No match found"
          Else
            'Move to the record on the subform
            Me.Form.Bookmark = rstID.Bookmark
          End If
          Me.ID.SetFocus
los parametros que tienes que modificar para que casen con tus datos son:
strCriteria = "ID = " & VALORBUSCADO <= Coloca el criterio correcto de busqueda
Me.ID.SetFocus <= Coloca un campo editable para que se coloque el cursor.
Ahora tienes que hacer una variable publica en un modulo. Por ejemplo VALORBUSCADO y que sea del tipo correcto, lo normal sera double para un campo autonumérico, el ID vamos.
Cuando llames al formulario 1, justo antes ingresa el dato del cuadro del formulario 2 en la variable publica de modo que cuando abra el form1 vaya a buscar el valor del registro que necesitas.
(cada día me explico peor... en fin)
A ver si te vale, si necesitas mejor explicación me lo comentas, que a estas horas ya no puede uno más, je je.
Hola, numerobix.
Bueno, he construido la primera parte del código, es decir:
En "al cargar"del formulario1:
Dim strCriteria As String
          Dim rstMiCodigo As Recordset
          ' Define search criteria
          strCriteria = "MiCodigo = " & MiCodigo
          Set rstMiCodigo = Me.Form.RecordsetClone
          ' Find the first occurrence
          rstMiCodigo.FindFirst strCriteria
          If rstMiCodigo.NoMatch Then
            MsgBox "No match found"
          Else
            'Move to the record on the subform
            Me.Form.Bookmark = rstMiCodigo.Bookmark
          End If
Me.MiCodigo.SetFocus
Reemplazando tu ID por "MiCodigo" que es el que yo tengo.
Y, efectivamente, al cargar el formulario1 el cursor se sitúa en el cuadro de texto MiCodigo.
Pero ya no entiendo lo siguiente. Cómo hacer eso de la variable y dónde se coloca .
Mi intención es que al hacer click en un item del cuadro de lista del formulario2, se abra el formulario1 en ese registro. (Postdata: "MiCodigo" en los dos formularios es de tipo numérico, por si puedo orientarte).
Ok numérico.
Tienes que abrir el editor de código.
Pincha con el derecho en "Microsoft Office Access Objetos de clase" en el menu de la izquierda INSERTAR->MODULO
Ahora veras un modulo nuevo.
Introduce este código:
PUBLIC idactiva AS Double
Guardalo con el nombre que quieras.
Ahora la variable idactiva es publica para toda la bd, lo que significa que cuando guardas un valor en ella se mantiene hasta que cierres la bd.
Bien, ahora en el formulario 2, cuando te abre el formulario 1 justo antes de esa linea pon:
idactiva = Me.MiCodigo
y en la linea del formulario 1:
strCriteria = "MiCodigo = " & MiCodigo
cambialo por:
strCriteria = "MiCodigo = " & idactiva
Ahora en teoría se te abre en el valor idactiva que has asignado anteriormente.
Hola, numerobix.
He avanzado un poco el código: he creado el módulo, y lo he guardado como
 PUBLIC idactiva AS Double. Luego en el formulario2, en el cuadro de lista, propiedades, al hacer doble click he puesto lo siguiente:
Private Sub Lista0_DblClick(Cancel As Integer)
On Error GoTo Err_Lista0_DblClick
    Dim stDocName As String
    Dim stLinkCriteria As String
    stDocName = "formulario1"
    idactiva = Me.MiCodigo
    DoCmd.OpenForm "Formulario1"
Exit_Lista0_DblClick:
    Exit Sub
Err_Lista0_DblClick:
    MsgBox Err.Description
    Resume Exit_Lista0_DblClick
End Sub
y luego, en el formulario1, al cargar,  he sustituido  la linea
strCriteria = "MiCodigo = " & MiCodigo   por:
strCriteria = "MiCodigo = " & idactiva 
Pero al hacer doble click por ej. en el item 5 del cuadro de lista, se me abre el formulario1 normal, es decir, en el primer registro y no en el 5.
Gracias por tu paciencia, pero soy un poco negado por lo que puedes ver. No tendrás una bd de ejemplo para pasarme, a ver que estoy haciendo mal.
Gracias..
En la primera linea del formulario 1 escribe:
msgbox idactiva
A ver que valor esta guardando. Si antes te funcionaba, ahora tendría que seguir haciéndolo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas