Función Contar.si en ACCESS

Necesito usar la función Contar.si en access. Lo que necesito es que al introducir datos en una tabla, en este caso números de bastidores me diga cuantas veces está repetido ese bastidor en la tabla. En Excel es fácil, pongamos que en la columna A tengo los números de Bastidores y en la columna B quiero hacer la cuenta. En la columna B solo tengo que poner la formula =contar.si(A:A;A2) en la celda B2 y me cuenta cuantas veces aparece el bastidor de la celda A2 en la columna A. Arrastro la fórmula hacia abajo y listo, cada vez q pongo un número de bastidor en la columna A, automáticamente en la columna B me dice cuantas veces está repetido. Y si es la primera vez, pondrá un 1. Es posible hacer esto en access? 

2 Respuestas

Respuesta
1

El gran defecto que tiene, a mi modo de ver, el Excel es que usas funciones escritas en "cristiano", pero lo que realmente le estás diciendo es otra cosa, en código VB, que no se vé. En tu caso Buscar. Si, en realidad le estás diciendo

If dlookup(.....) then

....

end if

Para tu caso y suponiendo que en la tabla tengas un campo NombreBastidor, por ejemplo la tabla Tabla1

Puedes ver que del nombre de bastidor ABC123 hay 2.

En vista diseño del formulario selecciona el control NombreBastidor y pulsa Hoja de Propiedades. En la solapa Eventos haz clic en la parte blanca a la derecha de Antes de actualizar y te aparecerá a su derecha un botón con tres puntos

Si lo pulsas se abre una ventana y selecciona 

Al aceptar se abrirá la ventana del editor de VB y verás que pone

Private Sub NombreBastidor_BeforeUpdate(Cancel As Integer)
End Sub

Pues en medio escribe para que quede como

Private Sub NombreBastidor_BeforeUpdate(Cancel As Integer)
Dim a As Integer
a = DCount("*", "tabla1", "nombrebastidor='" & Me.NombreBastidor & "'")
MsgBox "Hasta este momento llevas " & a & " bastidores", vbOKOnly + vbInformation, "Que conste que te he avisado"
End Sub

De forma que cuando vayas a un registro nuevo y escribas el nombre del bastidor( puedes ver que el cursor todavía está en el control NombreBastidor)

Cuando pulses Enter te pondrá

Te indica los que llevas antes de que contabilice el que acabas de escribir.

Muchas gracias por tu respuesta, esa función me es muy útil para otros casos y me ha ayudado mucho a cómo plantear mi necesidad actual. Te explico un poco más en detalle a ver cómo se podría hacer exactamente lo que necesito. 

Esto en realidad se trata de facturas de reparaciones de vehículos por lo que (para simplificar) tengo una tabla en la que pongo el número de bastidor (identificación del vehículo) y luego pongo el importe que me facturan y una descripción de la reparación. 

Lo que quiero hacer es un formulario en el que puedo poner esos campos (fácil) pero que contenga un subformulario de hoja de datos en el que, al introducir el número de chasis en el formulario inicial se detallen en ese subformulario todas las reparaciones que ha tenido anteriormente ese chasis (chasis, importe, descripción). 

Es esto posible? Como podría hacerlo? 

Es sencillo, pero un poco lioso de explicar. Si quieres, repito, si quieres, mándame un mensaje(sólo el mensaje) a [email protected] y te mando un ejemplo explicado.

Si lo haces, en el asunto del mensaje pon tu alias Javier Riva, ya que si no sé quien me escribe ni los abro

Respuesta

Y se puede hacer mucho más en Access. Utilice la función DCOUNT(): Aclaro que desconozco como tiene estructurada la tabla.

En un formulario en el evento Despúes de actualizar puede hacer que guarde la cantidad de veces que está en la tabla

Supongamos que la tabla se llama tblbastidores y que existen los campos nro_bastidor y cantidad. En formulario existe el control llamado "bastidor". Esta sería la instrucción que va en el evento después de actualizar el control bastidor.

Dim contador AS Integer

contador=dcount("*",tblbastidores","nro_bastidor=" &  Me.bastidor & "")" 

if contador=0 then

  Me.cantidad=1

else

 Me.cantidad=contador

Endif

También se puede hacer mediante SQL.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas