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

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í.

Respuesta
1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas