Crear código referencia desde valor de registro con incremento access

A ver si me pueden ayudar. Tengo una base de datos de referencias de mi empresa y tengo unas referencias de 20 dígitos y tenemos que pasarla que contenga únicamente 12 dígitos. Es para control de almacén.

La referencia se genera a través de Familia, subfamilia1, subfamilia2, así hasta 9. La referencia es con el siguiente formato, pongo 2 ejemplos pero tengo más de 2000 referencias:

01010103090000000000. Familia=01, Subfamilia1=01, Subfamilia2=01, etc...

04050523020500000000. Familia=04, Subfamilia1=05, Subfamilia2=05, etc...

Tengo todos los campos separados con los dígitos correspondientes. FAM-SF1-SF2-SF3-SF4-SF5-SF6-SF7-SF8-SF9. Luego concateno todos los campos y me hace la referencia. Llevamos muchos años trabajando con esta nomenclatura.

Y hemos acordado con la empresa de generar un código con la siguiente nomenclatura

GN010101-0000. GN es el almacén donde esta ubicado, solo tenemos un almacén. 01-Familia, 01-Subfamilia1, 01-Subfamilia2. Para sacar el "0000" quiero recorrer toda la tabla e introducir en el primer registro que encuentre con 01 de la Subfamilia2 asigne al primer registro "0000" en el siguiente incremente en +1 "0001" así hasta que llegue al siguiente registro que cambia la Subfamilia1 y asigne "0000" y vaya incrementando en +1 "0001" así correlativamente. Pongo una imagen que he hecho a mano para que veáis como quiero que quede.

No se si puedo hacerlo con una consulta o tengo que irme a código de VisualBasic, soy un poco patan con visualbasic.

A ver si me podéis ayudar.

2 Respuestas

Respuesta
1
Respuesta
1

No le pongo tantos registros pero es lo mismo. No se puede trabajar con este calor.

Si tengo la tabla Codigos

Con ella creo un formulario (da igual si es único o continuo, pero es más didáctico continuo) y le pongo un botón

Cuando lo pulso

El código del botón es

Muchísimas gracias,

Me has ayudado muchísimo. También tenia que utilizar la familia para cambiar de número y lo he introducido en tu código. Así:

Private Sub Comando9_Click()
Dim i As Integer
DoCmd.GoToRecord , , acFirst
For i = 1 To Me.Recordset.RecordCount
CODIGONUEVO = "GN" & "" & [FAM] & "" & [SF1] & "" & [SF2] & Format(DCount("*", "REFERENCIAS", "fam='" & Me.FAM & "'" & " and sf1='" & Me.SF1 & "'" & " and sf2='" & Me.SF2 & "' and id<=" & Me.Id & "") - 1, "0000")
DoCmd.GoToRecord , , acNext
Next
End Sub

Gracias por todo y eres un crack.

La culpa es mía, no te lo puse porque como en la imagen que pusiste, en Familia sólo se ve 01 creía que siempre era así.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas