Autonumérico para código inventario con letras
Publicado por Juan (150 intervenciones) el 20/04/2019 20:57:30
Hola a todos,
Estoy realizando una tabla de inventarios donde al crear un nuevo producto le asigno un código automatico que consta de letras y números.
En una tabla diferente creo el tipo de producto y le asigno automáticamente las tres primeras letras, por ejemplo.
INFORMATICA - INF
ELECTRICO - ELE
MECANICA -MEC
En otra tabla, introduzco el nuevo producto con sus características, al poner en un cuadro combinado el Tipo, me asigna el código, por ejemplo: INF0001.
Ahora lo que me pasa, es que al crear productos me crea:
INF0001
ELE0002
MEC0003
INF0004
Lo que quiero es que me cree el mismo número diferenciando las tres letras:
INF0001
ELE0001
MEC0001
INF0002
ELE0002
...
El código que he encontrado en ejemplo y he adaptado es:
Claro, al crear el autonumérico al cargar el registro me lo toma consecutivo. Hay otra manera de hacerlo?
Gracias por vuestra ayuda.
Estoy realizando una tabla de inventarios donde al crear un nuevo producto le asigno un código automatico que consta de letras y números.
En una tabla diferente creo el tipo de producto y le asigno automáticamente las tres primeras letras, por ejemplo.
INFORMATICA - INF
ELECTRICO - ELE
MECANICA -MEC
En otra tabla, introduzco el nuevo producto con sus características, al poner en un cuadro combinado el Tipo, me asigna el código, por ejemplo: INF0001.
Ahora lo que me pasa, es que al crear productos me crea:
INF0001
ELE0002
MEC0003
INF0004
Lo que quiero es que me cree el mismo número diferenciando las tres letras:
INF0001
ELE0001
MEC0001
INF0002
ELE0002
...
El código que he encontrado en ejemplo y he adaptado es:
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Private Sub Form_Current()
On Error Resume Next
If Me.NewRecord Then
Me.txtauto = Nz(DMax("txtauto", "TCrearproducto"), 0) + 1
End If
End Sub
Private Sub Tipo_AfterUpdate()
Me.CodigoFin = Me.Tipo.Column(2)
'Declaramos las variables
Dim cabecera As String
Dim vNum As Long
Dim vCod As String
Dim vLargo As String
'Cogemos el valor del autonumérico
vNum = Nz(Me.txtauto.Value)
cabecera = Nz(Me.CodigoFin.Value)
'Sacamos la longitud del autonumérico
vLargo = Len(vNum)
'Determinamos cuántos ceros debemos añadir
Select Case vLargo
Case 1
vCod = cabecera & "00000" & vNum
Case 2
vCod = cabecera & "0000" & vNum
Case 3
vCod = cabecera & "000" & vNum
Case 4
vCod = cabecera & "00" & vNum
Case 5
vCod = cabecera & "0" & vNum
Case 6
vCod = cabecera & vNum
Case Else
MsgBox "No puede crearse el código porque la longitud sería incorrecta", vbExclamation, "NO POSIBLE"
Exit Sub
End Select
'Escribimos el código obtenido
Me.Codigo.Value = vCod
End Sub
Claro, al crear el autonumérico al cargar el registro me lo toma consecutivo. Hay otra manera de hacerlo?
Gracias por vuestra ayuda.
Valora esta pregunta


0