Problemas guardar informe en pdf access

Tengo un formulario con un txt llamado txtFecha y cmd llamado cmdInforme en el cual quiero que me lance un informe filtrado sobre la fecha elegida, hasta aquí funciona correctamente.

Pero ahora pretendo que en vez de mostrármelo quiero quiero que me lo guarde en un ruta fija y he puesto el siguiente código:

Private Sub cmdInforme_Click()
    Dim resp As Integer
    Const miRuta As String = "C:\Users\KIKE\Desktop\Informes\"
    Dim miInforme As String
    miInforme = Me.txtFecha
    resp = MsgBox("¿Desea ver el informe?", vbQuestion + vbYesNo, "CONFIRMAR")
        If resp = vbYes Then
            DoCmd.OpenReport "InfDisponibilidad", acViewPreview, , "Fecha=#" & Me.txtFecha & "#"
          Else
            DoCmd.OutputTo acOutputReport, "InfDisponibilidad", miRuta & miInforme, acFormatPDF
        End If
End Sub

y me da el siguiente error

Y creo que me falta asignar la referencia o hay algo me falla en el código, y saber si esta es la forma correcta de hacerlo.

1 Respuesta

Respuesta
1

Kike: Prueba con éste código modificado.

Private Sub cmdInforme_Click()
Dim NombeInforme As String, FicheroPDF as String
NombreInforme =”InfDisPonibilidad”
Dim resp As Integer
Const miRuta As String = "C:\Users\KIKE\Desktop\Informes\"
Dim miInforme As String
miInforme = Me.txtFecha
resp = MsgBox("¿Desea ver el informe?", vbQuestion + vbYesNo, "CONFIRMAR")
If resp = vbYes Then
DoCmd.OpenReport "InfDisponibilidad", acViewPreview, , "Fecha=#" & Me.txtFecha & "#"
Else

FicheroPDF = miRuta & NombreInforme &".pdf"
DoCmd.OutputTo ObjectType:=acOutputReport, ObjectName:=NombreInforme, OutputFormat:=acFormatPDF, OutputFile:=FicheroPDF, AutoStart:=False

End If
End Sub

Si te va bien puedes simplificar alguna línea de código unificando Variables .Saludos >> Jacinto

Muchas gracias Jacinto, tras diversas pruebas he conseguido que me funciona así:

Private Sub cmdInforme_Click()
    Dim resp As Integer
    Const miRuta As String = "C:\Users\KIKE\Desktop\Informes\"
    Dim miInforme As String
    miInforme = Me.txtFecha
    resp = MsgBox("¿Desea ver el informe?", vbQuestion + vbYesNo, "CONFIRMAR")
        If resp = vbYes Then
            DoCmd.OpenReport "InfDisponibilidad", acViewPreview, , "Fecha=#" & Me.txtFecha & "#"
          Else
            DoCmd.OutputTo acOutputReport, "InfDisponibilidad", "PDFFormat(*.pdf)", "C:\Users\KIKE\Desktop\Informes\" & Format(Date, "ddmmyy") & ".pdf", False, "", , acExportQualityPrint
        End If
End Sub

Lo primero como puedo poner en dos lineas la parde de los dcmd? es que son muy largas, y lo segundo para aprender más sino le quiero dar ruta fija hay forma que me salga para donde lo quiero guardar y como lo voy a llamar?

Un saludo

Kike: Realmente mi respuesta ha sido sobre la marcha. Perfecto el que lo hayas conseguido.

Para separar una línea en VBA has de dejar un espacio, poner un guión bajo y pulsar Intro.

DoCmd.OutputTo acOutputReport, "InfDisponibilidad", "PDFFormat(*.pdf)", "C:\Users\KIKE\Desktop\Informes\" & _
Format(Date, "ddmmyy") & ".pdf", False, "",, acExportQualityPrint

Mis saludos >> Jacinto

Siento molestarte otra vez pero me estoy dando cuenta que en mi código me lo guarda en pdf correctamente pero me da todos los resultados de la consulta no me filtra por la fecha como si hace en la primera parte del If

Kike: Supongo que es porque no toma el filtro.

Intercala las líneas que te señalo:

Private Sub cmdInforme_Click()
Dim resp As Integer
Const miRuta As String = "C:\Users\KIKE\Desktop\Informes\"
Dim miInforme As String

miInforme = Me.txtFecha

resp = MsgBox("¿Desea ver el informe?", vbQuestion + vbYesNo, "CONFIRMAR")
If resp = vbYes Then
DoCmd.OpenReport "InfDisponibilidad", acViewPreview, , "Fecha=#" & Me.txtFecha & "#"
Else
DoCmd.OpenReport "InfDisponibilidad", acViewPreview, , "Fecha=#" & Me.txtFecha & "#",acHidden
DoCmd.OutputTo acOutputReport, "InfDisponibilidad", "PDFFormat(*.pdf)", "C:\Users\KIKE\Desktop\Informes\" & Format(Date, "ddmmyy") & ".pdf", False, "", , acExportQualityPrint
DoCmd.Close acReport,”InfDisponibilidad”

End If

End Sub

Ya me contarás. Saludos >> Jacinto

¡Gracias! He arreglado lo del filtro intercalando las líneas como me dijiste.

Pero me daba error en esa línea

DoCmd.Close acReport,”InfDisponibilidad”

Así que la elimine y funciona correctamente.

Muchas Gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas