Access - Campo autonumerico personalizado access

 
Vista:
sin imagen de perfil
Val: 17
Ha disminuido su posición en 4 puestos en Access (en relación al último mes)
Gráfica de Access

Campo autonumerico personalizado access

Publicado por Sebastian (9 intervenciones) el 03/02/2020 11:12:55
Hola tengo una base de datos acces, con un formulario que se llama facturas, tengo un campo que es: Numero_Factura, es autonumerico, me gustaria que fuese autonumerico con un codigo personalizado que sea asi:
001-20, 002-20, 003-20

¿Alguien me puede ayudar?

Gracias
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 Juan
Val: 414
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Campo autonumerico personalizado access

Publicado por Juan (150 intervenciones) el 03/02/2020 15:08:28
Haz una búsqueda en este foro de "autonumérico personalizado", hay infinidad de ejemplos.
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
sin imagen de perfil
Val: 17
Ha disminuido su posición en 4 puestos en Access (en relación al último mes)
Gráfica de Access

Campo autonumerico personalizado access

Publicado por Sebastian (9 intervenciones) el 26/02/2020 16:44:13
No encuentro ninguno que me valga. me da igual el tema de cambiar el año solo. por si me puedes ayudar. gracias
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
Imágen de perfil de Jhonattan
Val: 308
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Campo autonumerico personalizado access

Publicado por Jhonattan (123 intervenciones) el 27/02/2020 14:01:00
Para crear un autonumerico se utiliza la función dmax la cual lleva la siguiente estructura.

Ejemplo:

1
txtid = nz(dmax("id","tblfacturas"),0)+1

txtid es el campo en el formulario donde queremos mostrar el autonumerico creado con el codigo.

Nz evalua si en ese campo hay valores nulos

Dmax es la función que busca el valor mas alto en el campo de la tabla ejemplo si tienes 1,2,3,4 entonces el sabe que el numero mas alto es 4

Id es el campo que queremos convertir en autonumerico y este es el campo en la tabla

Tblfacturas, es la supuesta tabla que queremos tomar para convertir su id en autonumerico

0 es el valor desde donde comienza el autonumerico, ejemplo si el campo esta nulo se comienza desde 0 ahora tambien podemos reemplazar el 0 por 100 y el autonumerico partiria desde 1001

Y el +1 es para incrementar en 1 cada vez que vayamos guardando los autonumericos generados
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 17
Ha disminuido su posición en 4 puestos en Access (en relación al último mes)
Gráfica de Access

Campo autonumerico personalizado access

Publicado por Sebastian (9 intervenciones) el 27/02/2020 15:12:05
Gracias por la respuesta, la función la conozco, pero no se como poner que el id sea siempre con este formato 001-20 , y que se incremente solo la parte 001, así la siguiente factura seria 002-20,003-20.

Gracias por tu ayuda
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
Imágen de perfil de Francisco
Val: 467
Plata
Ha disminuido 1 puesto en Access (en relación al último mes)
Gráfica de Access

Campo autonumerico personalizado access

Publicado por Francisco (211 intervenciones) el 27/02/2020 16:37:24
Hola

Lo colocas en el evento Antes de Insertar del Formulario


1
2
3
Private Sub Form_BeforeInsert(Cancel As Integer)
    Me.articulo_id = Nz(DMax("articulo_id", "t_articulo"), 0) + 1
End Sub

Saludos
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

Campo autonumerico personalizado access

Publicado por Edp1697 (1 intervención) el 14/06/2022 20:42:13
Hola. Gracias por si guía y valioso conocimiento.
Justamente estoy intentando crear un autoincremental de tipo alfanumérico, pues me fue imposible que solo apareciera con 00001.

Pero tengo una situación muy particular.
Tengo N cantidad de combo box anidados. Uno de ellos "cmbseccion" controla al "cmbSerie"

Al mismo tiempo "cmbseccion" deberá encargarse de asignar el código para el ID alfanumérico"

1
2
3
4
5
6
7
8
9
10
11
12
13
Dim x As Integer
 
   z = Nz(DCount("Codigo_Suba", "Expedientes_DirOperativa", "Categoria='" & Me.cmbseccion & "'"), 0)
 
   If z = 0 Then
   'Valida si existe uno
    Me.Codigo_Suba = Me.cmbseccion & "001"
   Else
   'Valida si hay uno o mas ya registrado
        y = Nz(DLast("Codigo_Suba", "Expedientes_DirOperativa", "Categoria='" & Me.cmbseccion & "'"), 0)
        x = CInt(Mid(y, 3, 3)) + 1
         Me.Codigo_Suba = Replace(y, Right(y, Len(Trim(x))), x)
 End If

La problemática:

Debido a las relaciones que debe haber entre la tabla de Secciones, La tabla de Series y la tabla de Expedientes_DirOperativa solo logro que funcione una cosa. Ya sea el "cmbserie" anidado o la creación del código alfanumérico.
Esto debido a que es necesario que la tabla de Secciones tenga una relación con las tablas de Series y Expedientes en dos campos diferentes manteniendo integridad referencial.
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

Campo autonumerico personalizado access

Publicado por Anonimo (3314 intervenciones) el 15/06/2022 07:21:49
No encuentro relación causa/efecto entre la creación de una clave alfanumérica y las relaciones entre tablas en una base de datos relacional.

Si la clave alfanumérica devuelve de forma correcta las series, generara una clave única que simula mas de un auto-numérico en el mismo conjunto sin mezclarlos ni dejar de ser único.

Si existe un problema con las relaciones, serán las relaciones las que necesitaran adaptarse a la nueva necesidad (la misma que necesito una clave alfanumérica compuesta).
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

Campo autonumerico personalizado access

Publicado por Anonimo (3314 intervenciones) el 27/02/2020 23:15:49
Una secuencia como esta : 001-20 es un numero complejo y hay que diseccionarlo para poder utilizarlo

La primera parte será:
1
Left("001-20",3)
?Left("001-20",3)
001

La segunda será:
1
Right("001-20",2)
?Right("001-20",2)
20

como se desea incrementar la primera parte, hay que 'convertir' ese texto a numero, una función útil para esto es: VAL()
1
Val(Left("001-20",3))
?Val(Left("001-20",3))
1

Ya convertido en numero... a por el mas alto, para ello esta disponible la función de dominio DMax
1
DMax("Val(Left("001-20",3))" …….

Y aparecera el primer problema, comillas dobles dentro de comillas dobles (Access comienza a pedir aspirinas) démosle una:
1
DMax("Val(Left('001-20',3))" …….

Pero pensándolo bien ¿Por qué un texto y no el campo de la tabla que se llamara ¿Mi_Codigo?
1
DMax("Val(Left([mi_codigo],3))" …….

DMAx es una función de dominio, necesita un origen de datos (el dominio = la tabla) ...supongamos que se llama 'Mis_Datos'
1
DMax("Val(Left([mi_codigo],3))", "[Mis_Datos]" …….

pero … puede haber muchos años en esa tabla, digámosle que año deseamos (se supone que el actual)
Disponemos del referente (la segunda parte de ese dato):
1
Right("001-20",2)
y ojo, -estamos tratando con textos ---

1
DMax("Val(Left([mi_codigo],3))", "[Mis_Datos]" ,"Right([mi_codigo],2) ='" & Format(Date,"yy") & "'")

Logrado, obtenemos el mayor de los números de ese dominio, que se correspondan con el año actual ¿de cualquier siglo?

Por si no hay datos (devolvería un null) le añadimos la función NZ
1
Nz(DMax("Val(Left([mi_codigo],3))", "[Mis_Datos]" ,"Right([mi_codigo],2) ='" & Format(Date,"yy") & "'"), 0)

Obtenido el mas alto o un cero si no hay ninguno (el primero de cada año), le sumamos una unidad
1
Nz(DMax("Val(Left([mi_codigo],3))", "[Mis_Datos]" ,"Right([mi_codigo],2) ='" & Format(Date,"yy") & "'"), 0) +1

Y le complementamos con ceros
1
Format(Nz(DMax("Val(Left([mi_codigo],3))", "[Mis_Datos]" ,"Right([mi_codigo],2) ='" & Format(Date,"yy") & "'"), 0)+1, "000")

Estamos cerca del final deseado, añadamos el separador
1
Format(Nz(DMax("Val(Left([mi_codigo],3))", "[Mis_Datos]" ,"Right([mi_codigo],2) ='" & Format(Date,"yy") & "'"), 0)+1, "000") & "-"

Y el año en curso
1
Format(Nz(DMax("Val(Left([mi_codigo],3))", "[Mis_Datos]" ,"Right([mi_codigo],2) ='" & Format(Date,"yy") & "'"), 0)+1, "000") & "-" & Format(Date,"yy")

Se apreciara que son cosas básicas (una función muy conocida, tratar textos, sumar …….)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 17
Ha disminuido su posición en 4 puestos en Access (en relación al último mes)
Gráfica de Access

Campo autonumerico personalizado access

Publicado por Sebastian (9 intervenciones) el 02/03/2020 16:25:09
Perdona mi ignorancia, el código va también en antes de actualizar el formulario, o donde tengo que poner el código

Gracias
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
sin imagen de perfil
Val: 99
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Campo autonumerico personalizado access

Publicado por Rafael (225 intervenciones) el 26/06/2022 00:55:33
Mira el ejemplo de Jefferson en su página Web:
https://sites.google.com/site/jjjt1973/home/campo-autonumerico-mes-y-a%C3%B1o

Creo que es lo que buscas
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