Access - Informe no imprime datos del Formulario

 
Vista:
sin imagen de perfil

Informe no imprime datos del Formulario

Publicado por DinoZ (7 intervenciones) el 05/04/2022 11:23:58
Buenas a tod@s!

Esta es mi primera consulta en el foro. Espero aprender mucho de vosotros.

Resulta que tengo una base de datos donde introduzco la información por un formulario llamado "Partes Diarios".

También tengo un informe denominado "InformeParte" que es donde imprimo, cada parte de trabajo.

El origen de los datos de este informe es una consulta llamada "ConsultaParteDiario" que en el campo "Codigo" le tengo puesto el siguiente parámetro: [FORMS]![Partes Diarios]![Codigo]

Pues bien, en el Formulario "Partes Diarios" tengo un botón para, una vez introducidos los datos, imprimir un parte de trabajo (que sería el informe)

Ese botón, para imprimir, tiene el siguiente código en el evento "al hacer click" DoCmd.OpenReport "InformeParte", acNormal

Pero el problema es que me imprime el informe... pero con los campos vacios.

Eso si, si en el formulario, relleno los datos, pulso GUARDAR, en lugar de IMPRIMIR, me salgo del registro y vuelvo a él, entonces SI me imprime el informe con los datos.

Entiendo que el problema puede ser algo que tiene que hacer que los datos estén guardados antes de imprimir... pero me gustaria poder hacer eso con un mismo botón.

Lo he revisado todo, pero no hay forma...

He probado también el siguiente código con el botón imprimir... pero sigue sucediendo lo mismo.

Dim strReportName As String
Dim strCriteria As String

strReportName = "InformeParte"
strCriteria = "[Codigo]='" & Me![Codigo] & "'"
DoCmd.OpenReport strReportName, acViewNormal, , "[Codigo]= " & Me.Codigo

Qué estoy haciendo mal?

Gracias de antemano. Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Informe no imprime datos del Formulario

Publicado por Anonimo (3316 intervenciones) el 05/04/2022 11:58:02
El que salga en blanco ya lo has deducido: el origen de datos para el informe es una tabla y en las tablas solo 'existen' los registros que se guardan.

Mientras no se valide el registro en el formulario no se asienta en la tabla (un 'nuevo registro' mientras no se guarde solo es 'un proyecto')

La opción es añadir una orden de que se guarde como paso previo a su impresión, y en VBA la mas sencilla es:
1
DoCmd.RunCommand acCmdSaveRecord
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Informe no imprime datos del Formulario

Publicado por DinoZ (7 intervenciones) el 05/04/2022 12:07:05
Muchísimas gracias! Ha funcionado. Llevaba tres días atascado con esto...

Le he agregado la orden que me has comentado, a lo que ya tenia, quedando así el código "al hacer click" del botón imprimir

1
2
DoCmd.RunCommand acCmdSaveRecord
DoCmd.OpenReport "InformeParte", acNormal, , "[Codigo]=" & Me.Codigo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Informe no imprime datos del Formulario

Publicado por DinoZ (7 intervenciones) el 11/04/2022 08:32:38
Sobre este código hoy me he dado cuenta de un pequeño problema...

Alguna que otra vez es necesario volver a imprimir un parte que ya ha sido impreso anteriormente.

Pues bien, una vez que el parte ya ha sido guardado anteriormente (es decir, ese registro ya existe en la tabla) y pulso el botón para imprimirlo, me salta este error

G4IAlMx

Dentro de mis básicos conocimientos he intentado saltarme este error creando un IF para que en caso que me aparezca este error 2046, pues me imprima el parte igualmente. Y he puesto lo siguiente:

[codeIf DataErr = 2046 Then
DoCmd.OpenReport "InformeParte", acNormal, , "[Codigo]=" & Me.Codigo
Else
DoCmd.RunCommand acCmdSaveRecord
DoCmd.OpenReport "InformeParte", acNormal, , "[Codigo]=" & Me.Codigo
End If[/code]

Pero sin éxito...

Que podría ser?

Gracias de antemano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Informe no imprime datos del Formulario

Publicado por Anonimo (3316 intervenciones) el 11/04/2022 10:16:32
En Access hay recursos para casi todo y esto no es nada extraño.

Hay una variable a nivel de formulario que indica si el contenido (los datos del formulario) han sido modificados, se activa si se le cambia una coma (aunque se elimine y reponga esa misma coma) su nombre es DIRTY.

Si esta activa (Me.Dirty <>0) es que se modifico algo, si no esta activa (Me.DIRTY= 0) no hay cambios en el formulario = no hay nada que guardar (y salta el error).

Solución:

1
2
IF Me.Dirty Then DoCmd.RunCommand acCmdSaveRecord
DoCmd.OpenReport "InformeParte", acNormal, , "[Codigo]=" & Me.Codigo

Conclusión:
.- Si no hay cambios en el formulario (dirty = 0 // dirty = False) no se ejecuta la acción de guardar (no hay cambio en los datos).
.- Si hay cambios en el formulario (dirty <> 0 // dirty = True) se ejecuta la acción de guardar las modificaciones efectuadas


Nota:

Al ser una variable de tipo Boolean que se declara a nivel de formulario, 'nace' con el valor cero (0) por defecto (no asume el valor NULL).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Informe no imprime datos del Formulario

Publicado por DinoZ (7 intervenciones) el 11/04/2022 14:22:04
Muchas gracias de nuevo!

Y también por las explicaciones tan claras, ya que además, de que el código funcione, quiero aprender VBA.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar