Problema con informe access

Saludos y felices fiestas.
Tengo un problema con un informe de access. Este informe recoge los datos de un registro activo de un formulario.
El informe cuando lo abro está OK, con todos los datos del registro activo en el formulario.
El problema es que me abre tantas páginas como registros totales hay en la tabla original, es decir, si tengo 24 registros, me abre un informe con 24 páginas repetidas con los datos del registro activo del formulario.
¿Cómo podría solucionarlo?
Te agradezco tu colaboración y ayuda.

1 respuesta

Respuesta
1
Eso se debe a que en el informe estás presentando los datos del formulario sin hacer nada más.
Supongo que en los orígenes del control de los objetos del informe estás poniendo algo así como "=forms..." y de esa forma consigues que te aparezcan los datos del formulario en el informe.
Si lo estás haciendo así, esa no es la forma. Veamos como hacerlo.
Como no tengo mucha información de cómo lo has hecho, iré planteando la solución en base a lo que me imagino que estarás haciendo.
Empecemos por inverntar nombres: El formulario "Form1", el informe "Informe1", la tabla sobre la que escribe el formulario y que después presenta el informe "Tabla1". Por último el campo clave de la "Tabla1", aquel que identifica a cada uno de los registros, le llamaremos "id".
Entonces tenemos que en el formulario "Form1" tenemos un montón de campos entre los cuales está la clave "id" y, además, tenemos un botón (llamémoslo 'btnPresentaInforme'), que al pulsarlo nos presenta el informe con los datos del registro 'id'.
Si nosotros diseñamos "Informe1" sobre la tabla "Tabla1", tendremos que nos aparecerán tantos registros como tenga la tabla. Si la tabla tiene 24 registros y nuestro informe presenta una página por registro, tendremos 24 páginas. Hasta ahí lógico.
La solución correcta (hay otras más fáciles pero un tanto chapuceras), sería que el botón que tenemos en el formulario guarde los datos pendientes de actualizar (por si hemos modificado algún dato) y que llame al informe para ese único registro.
El informe deberá tener como origen del registro el campo de la tabla, no el dato del registro activo en el formulario. Esto es, en lugar de poner origen del registro "=forms...", pondremos el nombre real que tiene el campo en la tabla.
En el formulario, en el evento 'al hacer click' del botón, pondremos 'procedimiento de eventos' y en el código pondremos lo siguiente:
Private Sub btnPresentaInforme_Click()
    Me.Refresh ' Refresca en la tabla los datos del formulario
    If Me.CurrentRecord > Me.Recordset.RecordCount Then
        MsgBox "El registro marcado no existe" ' Está marcado un registro nuevo. No vale
      Else
        DoCmd.OpenReport "nombre del informe", acViewPreview, , "id=" & Me.id ' Presenta el informe para el "id" marcado
    End If
End Sub
Muchísimas gracias por tu respuesta. He hecho las modificaciones que me has indicado y funciona perfectamente. Es justo lo que yo quería. PERFECTO!
Saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas