Mostrar u ocultar un control en subformulario continuo

Tengo un formulario principal con nombres de productos. Un subformulario continuo con uno o varios casos por cada producto del formulario principal, con el tipo de caso (cboCaso) y el país (cboPais).

El subformulario no permite ediciones. El control cboPais tiene la propiedad visible marcada como No porque solo quiero que se vea con un tipo de caso determinado: 'Autorización', y no se vea con el resto porque solo quiero indicar el país cuando se trata de una autorización.

Lo he intentado con:

Private Sub Form_Current()
   If cboCaso = "Autorización" Then
      Me.cboPais.Visible = True
   Else
      Me.cboPais.Visible = False
   End If
End Sub

Y con:

Private Sub Form_Current()
   If Not IsNull(Me.cboPais) Then
      Me.cboPais.Visible = True
   Else
      Me.cboPais.Visible = False
   End If
End Sub

Private Sub Form_Current()
If Not IsNull(Me.cboPais) Then

Me.cboPais.Visible = True
Else
Me.cboPais.Visible = False
End If

End Sub

El problema es que cuando en el subformulario tengo varios casos diferentes (pej. 'Autorización', 'Registro', 'Venta') para un producto, el control cboPais solo se hace visible si la acción 'Autorización' está como primer registro o único registro, y en ese caso se ve también en el resto de casos del mismo producto.

Me gustaría que se viera el cboPais (cuando se ha seleccionado un país), aunque no sea el primer registro del subformulario.

1 respuesta

Respuesta
2

Louise, aunque te parezca mentira, los formularios continuos no existen, mejor dicho, no tienen existencia real. En un formulario único, sólo ves un registro, que es el activo, para ver el siguiente te tienes que desplazar y convertir el siguiente en el registro activo. En los continuos, realmente "sólo ves" el registro activo, los demás son"imágenes virtuales", que no tienen "existencia real" hasta que no se convierten en activos o te refieres a uno, en código. Por lo que si te refieres a un control, te estás refiriendo a todas las "imágenes", es decir, que si te oculta una, te oculta todas. Lo único que podrías hacer es usar el formato condicional para ponerle un fondo, un color de texto, etc.

¡Gracias Icue! 

No lo sabía, gracias por aclarármelo. Al leerte he pensado hacerlo con un recordset, pero me he liado, no sé cómo hacerlo. He escrito esto, pero como si nada. 

Private Sub Form_Current()

Dim rst As DAO.Recordset
Dim rstCaso As DAO.Recordset2
Dim listaCaso() As String
Dim i As Integer


Set rst = CurrentDb.OpenRecordset("SELECT * FROM TCasos WHERE IdProd=" & Me.IdProd)

Set rstCaso = rst("Caso").Value

i = 1
rstCaso.MoveFirst
Do Until rstCaso.EOF
ReDim Preserve listaCaso(i)
listaCaso(i) = rstCaso!Value
i = i + 1
rstCaso.MoveNext
Loop


For i = 1 To UBound(listaCaso())
If DLookup("Caso", "TCasos", "Forms!FProductos.[FsubCasosxProd].cboCaso= '" & listaCaso(i) & "'") = "Autorización" Then
Forms!FProductos.[FsubCasosxProd].cboPais.Visible = True
Else
Forms!FProductos.[FsubCasosxProd].cboPais.Visible = False
End If
Next


rst.Close
rstCaso.Close
Set rst = Nothing
Set rstCaso = Nothing
End If

End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas