Contar un rango de datos en Access

Necesito que en un formulario, me cuente los datos de un campo calculado. Tengo un campo con un porcentaje y necesito que me cuente los datos que tienen algún porcentaje calculado, ya que hay registros que hasta que no meten datos, no calcula y sale en blanco.

He probado con la función Count, pero si le meto una expresión entre paréntesis, me da siempre error. Solo me funciona si pongo Count(*), pero no quiero que me cuente todo.

¿Es posible contar un rango de datos?

1 respuesta

Respuesta
1

Antes de responder, cuidaros que son malos tiempos.

Para cálculos con diferencias entre campos o registros tienes la función Dcount, obviamente en VB. Por ejemplo, vamos a suponer que tienes un cuadro de texto llamado Total( y sin saber lo que calcula ese campo que citas). Puedes poner en sus Propiedades-Eventos-Al recibir el enfoque

Total=dcount("*","nombrede la tabla","ciudad=""Paris") 

Es decir, cuéntame cuanto registros hay en la tabla X que en su campo Ciudad sea igual a París.

O por ejemplo

Tpotal=dcount("*","tabla x","Marca=""audi"" and cilindrada=1800 or cilindrada=1200 and modelo=""elegance gtx""")

La ventaja de este sistema es que le puedes poner hasta 99 criterios and y or.

Me había olvidado, también puedes ponerlo como

Total=Dsum("(precio*cantidad)-retención","tabla x", "producto =""Patatas""")

Hola, igualmente, cuidarse lo que se pueda.

El campo que me calcula un porcentaje, nunca recibe el enfoque, en él, se calcula una suma y luego el porcentaje, pero dentro del mismo formulario, no cargo el dato desde una consulta.

En el formulario continuo, me aparece cada registro con su porcentaje calculado, pero solo tienen un valor, los que tienen datos, hay algunos, que al no estar con todos los datos, no muestra nada.

La idea es crear un campo nuevo, que haga la media de todos los porcentajes y para eso necesito contar solo los campos que tienen datos. Probe con Cuenta(*), sustituyendo el asterisco por una expresión, pero me da error siempre.

Entiendo que el Dcount, sería si cojo los datos de una tabla no?

Gracias.

Supongo que ese control calculado tiene su origen en algún campo de la tabla, o es el propio campo de la tabla el calculado. Vamos a suponer que se llama TotalPrecio. Como te decía, la función Cuenta, no permite distinguir un registro de otro, pero Dcount sí. Vamos a suponer también que la tabla origen del subformulario se llama DetalleVenta. Podrías poner, en el evento al recibir el enfoque de ese cuadro de texto, al que llamaremos Cuentaloquesea

cuentaloquesea=dcount("*","detalleventa","totalprecio is not null")

Es decir, cuenta aquellos registros de la tabla Detalleventa en que el campo TotalPrecio tenga un valor que no sea nulo

De todas formas, si pudieras poner una imagen del formulario con el subformulario se podría concretar más.

Efectivamente. La función Cuenta, sólo, valga la redundancia, cuenta registros, estén como estén., mientras que la función Dcount, "discrimina" que contar y que no contar. Por ejemplo supongamos que tengo el formulario

Donde le he puesto dos cuadros de texto Texto) y texto 11 para que me muestre cuántos registro tienen valor en Total. Cuando pongo el cursor(que como te dije se puede hacer en cualquier otro evento)

Y el código es simplemente

Private Sub Texto9_GotFocus()
Texto9 = DCount("*", "ventas", "total is not null")
Texto11 = DCount("*", "ventas", "total is null")
End Sub

Por eso, para concretar más, sería conveniente que pusieras una imagen del formulario con el subformulario.

Hola,

Lo que tengo es esto:

Donde pone Fichaje %, hace esto:

=SiInm([Total_contratado]=0;"";SiInm([Total_fichado]=0;"";SiInm([Total_fichado]<([Total_contratado]-[Mira_bocadillo]);[Total_fichado]/([Total_contratado]-[Mira_bocadillo]);([Total_contratado]-[Mira_bocadillo])/[Total_fichado])))

Depende de los campos que tiene al lado, Tot. Fichado y Tot. Contratado.

Para ese campo no cojo valores de una consulta, necesito que me discrimine, los valores del propio formulario.

Por lo que dices, esa expresión la tienes puesto en el origen del control del cuadro de texto. El problema de los cuadro de texto independientes en un formulario continuo es que lo que te aparezca en uno, te aparece en todos. En la imagen, en el registro de arriba le cambio el valor a Cantidad, y como tengo puesto que después de actualizarlo, en Subtotal me ponga el producto Precio*Cantidad, puedes ver que lo repite en todos.

Lo que haría sería darle un origen de control al cuadro de texto Fichaje, es decir, un campo de la misma tabla origen del formulario y luego decirle en código, en el evento Después de actualizar del cuadro de texto que intervenga inmediatamente antes

Select case Total_contratado

Case is=0

fichaje=0

Case >Total_Fichaje

fichaje=....

...

End select

Y así, en cada registro te guarda su verdadero valor, independientemente de las operaciones que hagas en código.

Ten en cuenta que en los formularios continuos, lo mismo que en las tablas, aunque veas varios registros, sólo tiene existencia real el registro activo, los demás son imágenes virtuales, que no tienen existencia física.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas