VBA ACCESS: Contar la cantidad de opciones seleccionadas

En un formulario tengo un campo llamado CATEG donde se pueden elegir varios valores. Necesito contar la cantidad de opciones seleccionadas o bien, ver si el campo no tiene valores seleccionados.

Espero no se rían pero probé de las siguientes formas y obvio, no funcionaron:

DCount("[CATEG]","[ALMANAQUES]")
DCount("[CATEG.Value]","[ALMANAQUES]")
DCount("[CATEG].Value","[ALMANAQUES]")

Después probé con:

DCount("[CATEG]", "[ALMANAQUES]", "[CATEG].Value = True")

Por momentos me arroja por el total de la base de datos. Pero necesito si hay valores seleccionados en el registro actual.

¿Es posible? ¿Hay alguna forma de determinar si el campo tiene valores activos (o seleccionados)?
ACLARACIÓN: No importa tanto saber cuántos hay seleccionados, sino si el campo tiene valores seleccionados.

1 Respuesta

Respuesta
2

esta respuesta, a ver si te da la pista de por dónde atacar: http://www.todoexpertos.com/preguntas/76tvfj67ta6c9dor/mensaje-de-aviso-en-formulario-condicionado-a-datos-de-una-tabla?selectedanswerid=76wcbrwvj6v3srcs&nid=9ksqlvkpfrsm9gu9hbvpphkoabumhssnggq9pvsqf8jp7he6g4m6nf3 

Otra pista podrías tener en: http://siliconproject.com.ar/neckkito/index.php/component/content/article/96-ejemplos-explicados/ejemplos-de-controles/298-campos-multivalor 

¡Gracias!
Bastante más complejo de lo que esperé. Hice algo un poco más simple, quizá hasta impreciso, pero al menos no es tan complejo.
Comparo el valor ANTES y DESPUES de guardar en cuanto a la cantidad de opciones seleccionadas. Eso me permite desencadenar si se debe elegir o no (si el valor es el mismo que pida al usuario elegir una categoría, sino sigue adelante).

Un ejemplo burdo aunque lo tengo que pulir ahora es este:

   VC1 = DCount("[CATEG]", "[ALMANAQUES]", "[CATEG].Value = True")
   DoCmd.RunCommand acCmdSaveRecord
   VC2 = DCount("[CATEG]", "[ALMANAQUES]", "[CATEG].Value = True") '"lstCateg.value = 'True'")
If VC2 = VC1 Then
    MsgBox "No se han seleccionado categorías para el " & Me.lstTipo.Value & ".", 16, "Nuevo almanaque"
Else
    Beep
    DoCmd.OpenForm "Adj_Almanaque", acNormal, "", "", , acWindowNormal
    Forms![Adj_Almanaque]![txtFiltro].Value = txtID
End If

Igual, seguro cuando tenga más experiencia volveré sobre esta sugerencia y daré uso como mucho de lo que en su momento abandoné por la complejidad.
¡Saludos y muchas gracias como siempre!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas