Código Alfanumérico Automático de acuerdo tipo de documento y área de la empresa

Tengo una formulario el cual me permite controlar el sistema documental de la empresa, pero deseo encontrar la forma de que al crear un nuevo registro se genere un código automáticamente. El código esta conformado así. X###-XX donde el primer caracter depende del tipo de documento (Manual "M", Procedimiento "P", Instructivo "I"), seguido un numero de 3 digitos que es un consecutivo por tipo de documento, y las dos ultimas letras son de acuerdo al area al que pertenezca el documento.

Por ejemplo: P002-GH Indica que es el segundo procedimiento del area de Gestión Humana.

La verdad yo Access no lo manejo muy bien, y me gustaría saber si esto es posible.

1 respuesta

Respuesta
1

Si realmente luego quieres realizar búsquedas por tipo de documento, área y numero etc, deberías usar 3 campos diferentes, aunque luego a la hora de imprimir, mostrar, etc, los muestres los 3 juntos. Si no manejas muy bien Access, es lo más sencillo de realizar. Crea 3 campos... uno que sea tipo de documento (puedes usar un campo de string de 1 carácter, por sencillez, aunque no es la mejor manera de hacerlo, te servirá), otro que sea un numérico entero, y otro que sea para el área (otro string).

Muchas gracias por su respuesta, pero me queda una inquietud. De que forma programo el consecutivo, es decir, si yo tengo un área que tenga 3 procedimientos y otra que tenga 10 no va a ser el mismo numero que se le debe asignar cuando se vaya a asignar un numero de procedimiento a cada área,para una seria P004-GH y para la otra P011-GQ. Para esto primero tuve que seleccionar el tipo de documento, y el área al que pertenece, después internamente la BD debería realizar una búsqueda para ver en que consecutivo va esa área de acuerdo al documento. ¿Como lo podría hacer?

Simplemente tendrías que buscar cual es el ultimo número para cada área, e incrementarlo.

Por ejemplo... algo así te traería el último número de procedimiento del área que le pases

private function devuelve_ultimo_numero(área as string) as integer
    dim db as database
    dim rs as recordset
    set db=currentdb
    set rs=db.openrecordset("select last([numero_procedimiento]) as ultimo_numero from [la_tabla_que_sea] where area='" & area & "'")
    if rs.recordset.recordcount>0 then
        ' como solo puede haber un ultimo registro, lo devolvemos directamente
        if isnumeric(rs.fields("ultimo_numero")) then
            devuelve_ultimo_numero=cint(rs.fields("ultimo_numero"))
        else
            devuelve_ultimo_numero=0 ' Hasta aqui no deberia llegar, pero por si acaso
        end if
    else
        devuelve_ultimo_numero=0 ' no ningun procedimiento en ese area, devolvemos 0
    end if
end function

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas