No me coge correctamente el caption del informe

Voy a explicarlo por partes:

Tengo un formulario en forma de diálogo en el que tengo varias opciones para después, mediante un botón, abrir el correspondiente informe. El código del botón es el siguiente:

Private Sub Etiqueta30_Click()
Dim MiAño As String
Dim MiTrimestre As String
Dim MiArgumento As String
If Me.Año.Value <> 1 Then
    MiAño = Me.acc.Value
    miFiltro = "[Año]='" & MiAño & "'"
    MiArgumento = " - " & Me.acc & "PieAñoVisible"
End If
If Me.Trimestre <> 1 Then
    MiTrimestre = Me.tcc.Value
    miFiltro = miFiltro & "[Trimestre1]='" & MiTrimestre & "'"
    MiArgumento = " - " & "T" & Me.tcc
End If
If Me.Trimestre <> 1 And Me.Año.Value <> 1 Then
    MiAño = Me.acc.Value
    miFiltro = "[Año]='" & MiAño & "'"
    MiTrimestre = Me.tcc.Value
    miFiltro = miFiltro & "AND [Trimestre1]='" & MiTrimestre & "'"
    MiArgumento = " - " & Me.acc & " T" & Me.tcc & "PieAñoNoVisible"
End If
DoCmd.OpenReport "04-G Resultado trimestral", acViewPreview, , miFiltro, , MiArgumento
DoCmd.Close acForm, Me.Name
End Sub

En el informe, para sacar el caption, tengo el siguiente código:

Private Sub Report_Open(Cancel As Integer)
On Error Resume Next
DoCmd.Maximize
If Right(Me.OpenArgs, 13) = "PieAñoVisible" Then
Me.Caption = "Resultado1" & Left(Me.OpenArgs, Len(Me.OpenArgs) - 13)
Else
Me.Caption = "Resultado2" & Me.OpenArgs
End If
If Right(Me.OpenArgs, 15) = "PieAñoNoVisible" Then
Me.Caption = "Resultado" & Left(Me.OpenArgs, Len(Me.OpenArgs) - 15)
Else
Me.Caption = "Resultado" & Me.OpenArgs
End If
End Sub

Le mete el texto "PieAñoVisible" porque lo utilizaré luego para dar formato a las distintas secciones dle informe.

Mi problema es que no me funciona correctamente el caption.

Cuando selecciono en el diálogo el año, me coge bien el Argumento, pero al pasarlo al informe y filtrarlo por los condicionales, no me corta "PieAñoVisible".

Sé que puede ser un poco lioso. Si hace falta grabo un vídeo.

No sé qué puede estar pasando o se me está escapando.

1

1 respuesta

Respuesta
1

Creo que el problema lo tienes en que en ocasiones no tienes 13 o 15 caracteres en el openargs, lo que provoca un error en los Ifs, del que no te enteras por culpa de la linea "On error resume next"

Si la quitas o la comentas, y abres el informe, tendrás un error y confirmará lo que supongo. Me cuentas y vemos cómo solucionarlo.

He comentado esa línea, y no me da ningún error.

He estado haciendo pruebas, y me doy cuenta de que, a pesar de que coincida el primer If (el de 13) -es verdadero, quiero decir-, se va al else del if del 15. No sé si me explico. Puede ser por lo que comentas, pero lo tengo puesto así en otros informes y no me da ningún problema.

¡Gracias!

Vale, lo de que se te vaya al else del If del 15 es lógico:

El código primero mira si los últimos 13 caracteres coinciden con "PieAñoVisible" y pone un caption u otro. Hasta aquí bien, pero luego comprueba el segundo If (si los últimos 15 coinciden con "PieAñoNoVisible") y como es lógico, no van a coincidir, porque ya coincidían con el If anterior, y se va a la parte del Else.

Tendrías que anidar el segundo If dentro del else del primero o usar una construcción tipo If Then EsleIf...Esle

La pregunta no admite más respuestas

Más respuestas relacionadas