Access - id por años

 
Vista:

id por años

Publicado por Jonathan (13 intervenciones) el 08/03/2007 11:50:58
Tengo un formulario en el que voy mentiendo los datos de los vehículos de una empresa. Para relacionar cada entrada con los expedientes físicos le tengo un campo Id automático, pero el problema es que, lógimamente, me enumera los campos pero, yo necesito diferenciar las entradas de un año con las de otro. Es decir: tal y como tengo el campo Id, la u´ltima entrada del 2006 sería por ejemplo la 80, y la primera del 2007 la 81.
Yo necesito que la primera del 2007 sea la 1. Para eso me gustaría poder hacer una campi id automático en el que las entradas fueran tal que así:
01/2006
02/2006.....
01/2007
02/2007

Necesito una respuesta urgente y facil porque no seoy muy experto en esto.
Grancias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Numeración personalizada por año en campo Id automático

Publicado por Alejandro (4142 intervenciones) el 04/08/2023 16:45:45
Para lograr la numeración deseada en el campo Id automático, puedes crear un campo adicional que combine el mes y el año en un formato específico y usarlo como el identificador. Aquí tienes una solución sencilla:

1. Asegúrate de tener un campo numérico llamado "Id" configurado como campo autonumérico para obtener la numeración secuencial.

2. Agrega un campo de texto llamado "IdPersonalizado" (o el nombre que prefieras) para almacenar el identificador personalizado en el formato "MM/YYYY".

3. En el evento "Antes de insertar" del formulario, genera el valor para el campo "IdPersonalizado" utilizando el siguiente código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Private Sub Form_BeforeInsert(Cancel As Integer)
    Dim UltimoMes As Integer
    Dim UltimoAño As Integer
    Dim NuevoId As String
 
    ' Obtiene el último valor del campo Id y extrae el mes y el año
    If Not IsNull(DMax("Id", "NombreDeTuTabla")) Then
        UltimoMes = Month(DMax("Id", "NombreDeTuTabla"))
        UltimoAño = Year(DMax("Id", "NombreDeTuTabla"))
    Else
        ' Si no hay registros, establece el mes y el año como enero del año actual
        UltimoMes = 1
        UltimoAño = Year(Date)
    End If
 
    ' Compara el año y el mes actual con el último año y mes almacenado
    If Year(Date) > UltimoAño Or (Year(Date) = UltimoAño And Month(Date) > UltimoMes) Then
        ' Si es un nuevo año o un nuevo mes, comienza la numeración desde 1
        NuevoId = "01/" & Year(Date)
    Else
        ' Si es el mismo año y mes, incrementa la numeración en 1
        NuevoId = Format(DMax("Id", "NombreDeTuTabla") + 1, "00\/yyyy")
    End If
 
    ' Asigna el nuevo valor al campo IdPersonalizado
    Me.IdPersonalizado = NuevoId
End Sub

Recuerda reemplazar "NombreDeTuTabla" con el nombre real de tu tabla donde están almacenados los registros de los vehículos.

Con esta solución, cada vez que ingreses un nuevo registro en el formulario, el campo "IdPersonalizado" se calculará automáticamente con el formato deseado "MM/YYYY" y seguirá la numeración que esperas para cada año.

Espero que esta solución te sea útil y te permita obtener el resultado deseado. ¡Buena suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar