Conteo Consecutivo de Valores Duplicados en MS Access 2010

Soy nuevo en el foro y no he encontrado alguna respuesta que me ayude con este tema: Tengo una base de datos, de donde salen diferentes consultas. A la base de datos se le agregan registros nuevos cada mes, por lo que necesito saber el consecutivo, independiente, de cada uno de los registros repetidos.

Los datos que necesito trabajar desde la tabla son "PROPUESTA" y "MES". Requiero que en una consulta yo pueda enumerar la aparición de la propuesta de acuerdo a la tabla original ya que es con base en este resultado que sabré si esa propuesta tendrá o no un parámetro de "Nuevo" o "Renovado", de acuerdo a la duración de su contrato (12 ó 24), dada por otros criterios.

Un ejemplo es

Propuesta mes orden aparición

54253                 08/2015        1

12456                07/2014         1

54253                 09/2015       2

12456 08/2015  2

12456 10/2015  3

99887 08/2015  1

Agradezco de antemano la ayuda de la comunidad para resolver esto y poder solucionar esto en mi trabajo.

3 respuestas

Respuesta
1

Leonardo: Si en la Tabla tienes los 2 Primeros campos, tal como los describes y lo que quieres es Obtener el tecer campo, mi sugerencia es que con el asistente de Access hagas una consulta de Dats agrupados y en Aparicion pones >>

Aparicion:Aparicion

Y en la Fila de Total en lugar de << Agrupar por>>, le pones >> Cuenta o Suma según lo necesites.

Mis saludos >> Jacinto

Leonardo: Releyendo tu pregunta, me queda la duda si lo que buscas es un " Autonumérico" por Propuesta. Si fuera así, puedes inspirarte en algún ejemplo que ya hay confeccionado en la Web de Neckkito:

http://siliconproject.com.ar/neckkito/index.php/ejemplos-explicados/todos/95-ejemplos-explicados/ejemplos-de-codigo/231-alfanumerico-autonumerico 

Y éste otro

http://siliconproject.com.ar/neckkito/index.php/ejemplos-explicados/todos/93-ejemplos-explicados/ejemplos-de-formularios/158-autonumerico-manual 

Mis saludos >> Jacinto

¡Gracias Jacinto! 

Ya pude solucionarlo de otra manera, sin embargo los links que me diste están buenísimos.

Saludos,

Respuesta
1

Supongamos que la tabla se llama Proyecto, con los campos Propuesta y mes,. Puedes añadirle un campo(no es necesario pero si explicativo) llamado Aparicion. Supongo también que los datos los metes a través de un formulario(da igual si es único o continuo) al que llamaremos también Proyectos. En las propiedades del cuadro de texto Propuesta, o en el de mes, en eventos-Después de actualizar crea un procedimiento de evento y entre Private Sub y End Sub escribe

DoCmd. RunCommand acCmdSaveRecord
Aparicion = Nz(DCount("propuesta", "proyecto", "propuesta=forms!proyectos!propuesta"))

Así, cuando escribas el primer registro, "contará" y le asigna un 1. Cuando se repita el numero de propuesta le asignará el 2...

Muchas gracias Icue,

Tu respuesta me es útil para otra aplicación que tengo, sin embargo para este caso en particular, la data en la tabla inicial es incertada manualmente (Copio la data desde Excel y la pego en la última fila de la tabla de Access). El orden no debería ser modificado ya que es información de un tercero y por manejo de la data, no se puede.

Es posible que ahora te haga una segunda pregunta respecto al código que me escribiste, pero para este caso?

Agradezco nuevamente tu útil respuesta y también, de antemano por tu ayuda.

Si quieres meter a mano el valor de ¿fecha? Vale, pero ¿has probado a vincular la tabla de Access a la de Excel? Así no tendrías que estar copiando y pegando,

Por otro lado, con esa tabla de Access, que supongamos que tiene Idpropuesta, mes, aparición, puedes hacer un formulario y, por ejemplo, poner un botón de comando y en el evento al hacer clic poner

DoCmd.SetWarnings False
DoCmd.GoToRecord , , acFirst
Dim i As Integer
For i = 1 To Form.Recordset.RecordCount
Aparicion = Nz(DCount("propuesta", "proyecto", "propuesta=forms!proyectos!propuesta and idpropuestaa<=forms!proyectos!idpropuesta"))
DoCmd.GoToRecord , , acNext
Next

O también, para no tener que estar pulsando el botón, ponerlo en el evento Al activar registro del formulario. Así cada vez que lo abras, "recalculará" el valor de aparicion.

De todas formas, si quieres, mándame un mensaje a [email protected] y te mando un ejemplo. Si lo haces, en el asunto del mensaje pon tu alias Leonardo, ya que si no se quien me escribe, ni los abro.

¡Gracias Icue!

Finalmente lo solucioné a través de una consulta SQL:

SELECT cp.*, iif( ((cint(Right(MES_REPORTE,4))  - minimo) * Límite + ALTURACUOTA   > Límite), 'R', 'N') AS Estado
FROM ASF_Proc_Cob2 AS cp, (SELECT propuesta, min(cint(Right(MES_REPORTE,4)) ) AS minimo FROM ASF_Proc_Cob2 WHERE PRIMACUOTA>0 GROUP BY propuesta)  AS tab1
WHERE cp.propuesta = tab1.propuesta and PRIMACUOTA>0
ORDER BY MES_REPORTE;

En esta orden, MES_REPORTE se refiere al mes que yo pongo manualmente, ALTURACUOTA Se refiere al número de cuota que ha pagado el cliente (En la data original, va de 1 a 12 o de 1 a 24, sin importar si lleva varios años con nosotros, es decir que si alguien lleva 3 años, el 1 aparece más de una vez), Límite que se refiere al máximo de cuotas que puede tener este registro y PROPUESTA se refiere al número de referencia de cada uno de los registros, que es el que se repite n veces.

Lo que hace esta consulta es, primero traer el mínimo año del historial de cada propuesta y lo pone en una columna adicional, luego calcula la diferencia entre el año del mes de reporte y el año mínimo, lo multiplica por el Límite (12 ó 24) y le suma la altura de la cuota. Si después de esta operación la altura de la cuota supera el límite dado, se considera Nuevo (N) y de lo contrario, Renovado (R).

Respuesta
1

select propuesta, count(*)

           from tabla

           group by propuesta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas