Macro Access con error al exportar

Tengo creada una macro para exportar una serie de datos en Access.

Esta macro está creada para que funcione al abrir un formulario. Cuando lo abres, llama a un informe, el cual me hace una pregunta sobre un campo en concreto (el indicado en la consulta correspondiente). Al indicarle el campo, lo que tiene que hacer es exportar el resultado en formato PDF con el nombre de un campo en concreto. Esto funciona bien, salvo cuando este campo es nulo, que me da error.

Os muestro donde tengo el problema:

Dim JJ As String

JJ = Public.Fecha

    DoCmd.OutputTo acOutputReport, "Public", "PDFFormat(*.pdf)", "Desde" & JJ & ".pdf", False, "", , acExportQualityScreen

Cómo puedo hacer para que, si JJ es nulo me ponga "MAL", y si no, ¿JJ?

1 Respuesta

Respuesta
1

Prueba así:

JJ = iif(IsNull(Public.Fecha),"Mal",Public.Fecha)

Pero sin saber de dónde viene lo de Public. Fecha, quizás no acabe de funcionar.

Si no te funciona, prueba de esta otra manera:

 DoCmd.OutputTo acOutputReport, "Public", "PDFFormat(*.pdf)", "Desde" & iif(Nz(JJ,"")="","Mal",JJ) & ".pdf", False, "", , acExportQualityScreen

Hola, me sigue dando el mismo error.

Lo que creo que me pides es esto:

JJ = Reports![Public alb].fecha

Lo otro lo modifique pensando que no sería importante.

Lo he puesto de la siguiente manera:

JJ = iif(IsNull(Reports![Public alb].fecha]),"Mal",Reports![Public alb].fecha)

Perdón, y muchas gracias.

De la segunda forma tampoco me funciona.

Muchas gracias por tu tiempo.

A ver así:

Dim JJ As Variant

JJ = Reports![Public alb].fecha

If IsNull(JJ) Then "Mal"

DoCmd.OutputTo acOutputReport, "Public", "PDFFormat(*.pdf)", "Desde" & JJ & ".pdf", False, "", , acExportQualityScreen

Si así te sigue sin ir, dime qué error te da ( número y descripción) y en qué línea te lo marca.

Mañana pruebo y te digo. Una pregunta, y desde la ignorancia, que en esto estoy bastante perdido, no faltaría un End if?

No si lo en una sola línea

Buenos días, me da error de sintaxis en la línea

If IsNull(JJ) Then "Mal"

En concreto me marca lo de Mal

Boh, disculpa, que por responder desde el móvil me comí una parte importante. Efectivamente, falta "algo" en esa línea:

If IsNull(JJ) Then JJ="Mal"

Nada, me da el siguiente error:

Se ha producido el error 2427 en tiempo de ejecución:

Ha especificado una expresión que no tiene valor.

Y marca en amarillo la línea JJ = Reports![Public alb].fecha

Voy a cambiar el enfoque de la solución, a ver:

Dim JJ As String
On Error goto sol_err
JJ = Reports![Public alb].fecha
Siguiente:
DoCmd.OutputTo acOutputReport, "Public", "PDFFormat(*.pdf)", "Desde" & JJ & ".pdf", False, "",, acExportQualityScreen
Exit Sub
sol_err:
If Err.Number=2427 Then
    JJ="Mal"
    Resume Siguiente
Else
    Msgbox "Vaya ha ocurrido un error inesperado, cancelando la exportación"
End If

Perfecto, ahora si funciona. Muchas gracias.

Una duda más, ¿cómo se podría poner para una segunda variable? A mi me sonó muy bien poner lo siguiente:

If Err.Number=2427 Then

         JJ="Mal"   And  PP="Mal2"  
         Resume Siguiente

Else     

           Msgbox "Vaya ha ocurrido un error inesperado, cancelando la exportación"

Pero claramente no funciona.

Ya está!!!! Era tan fácil como poner una debajo de la otra:

JJ="Mal"
PP="Mal2"

Ahora funciona de maravilla, muchísimas gracias.

P.D. Eres una maquina.

Me alegra ver que lo solucionamos, porque me tenía un poco mosca el asunto...

Te invito a que te pases por el foro de Access que tenemos montado (en enlace al final o en el QR)

Un saludo.


Añade tu respuesta

Haz clic para o

Más respuestas relacionadas