Contar condicional en un informe Access.

Estoy haciendo un informe de una BD Access de una tabla que contiene un campo llamado "ESTADO" unos registros tienen una "A" en este campo y otros una "B" quiero que al final me cuente cuantos tienen cada una de esas letras, he leído ayudas, he buscado por todas partes y no doy con ello.

Respuesta
1

Lo puedes hacer de tres mil formas distintas( eso sin exagerar que exagerando...)

Por ejemplo, supongamos que tengo la tabla Clientes

Desde cualquier evento, pero para el ejemplo, desde un botón de un formulario

Cuando lo pulso

Cuando pulso Aceptar (como no has dicho si quieres que se vea el campo Estado, ya que no hace falta que se vea, ni donde quieres que se vean los cuadros, etc..., lo he puesto en el pie del informe, pero...)

El código del evento Al hacer clic del botón es

Private Sub Comando292_Click()
Dim a As Integer, b As Integer
a = DCount("*", "clientes", "estado=""a""")
b = DCount("*", "clientes", "estado=""b""")
MsgBox "Le advierto, antes de abrir el informe que hay " & a & " clientes con A y " & b & " clientes con B", vbOKOnly + vbInformation, "Ahora se abrirá el informe"
DoCmd.OpenReport "Clientes", acPreview
End Sub

Obviamente, si no quieres ver el mensaje deja sólo la línea del docmd.

Y el evento al dar formato de la sección Detalle del informe es

Private Sub PieDelInforme_Format(Cancel As Integer, FormatCount As Integer)
TotalA = DCount("*", "clientes", "estado=""A""")
TotalB = DCount("*", "clientes", "estado=""B""")
End Sub

En caso de que pudiera haber registro que no tengan nada escrito en estado, tendrías que ponerlo como

...Dcount("nz([Estado])","clientes......

Por eso sería conveniente que concretarás más que es lo que necesitas

Muchas gracias por tu ayuda, Julián.

El mensaje informativo sale perfectamente, pero al pulsar Aceptar me aparece el siguiente mensaje:

Error de compilación.

Los comentarios solo pueden aparecer después de End Sub, End Function ó End Property.

Me deja marcado en azul el último End Sub.

Es que tienes repetido Private Sub Y End sub. Elimina, por ejemplo, el primer Private Sub y el último End Sub. Lo que te había puesto en la imagen es como tiene que quedar.

Por cierto, si lo pones en la sección Detalle, probablemente te lo repita tantas veces como registros haya en esa sección.

¡Muchísimas Gracias! Todo resuelto, si no te importa, volveré a darte la lata.

Hace más de 20 años que no uso Access y ya lo tengo muy oxidado.

1 respuesta más de otro experto

Respuesta

Efectivamente hay más formas de hacerlo, prefiero mediante SQL, toda vez, que si lo hace con un gestor de base de datos como PostgreSQL u otro no podrá utilizar Dcount().

Puede crear una consulta de agrupación y crear un sub reporte basado en esta consulta. Esta sería la instrucción SQL.

SELECT tblclientes.estado AS ESTADO, Count(tblclientes.estado) AS CANTIDAD

FROM tblclientes
GROUP BY tblclientes.estado;

 Ahora incrustamos el sub reporte y obtendríamos algo como:

Si desea el ejemplo escríbame a [email protected] haciendo referencia en el asunto a la pregunta, con gusto se lo hago llegar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas