Formato Id

Iniciado por andaluz, 2 Julio 2019, 11:12 AM

0 Miembros y 1 Visitante están viendo este tema.

andaluz

Hola a todos,

Me gustaría realizar en el código del usuario el siguiente formato:

año0001

y la duda es como realizo para que el año se me actualice manteniendo la autonumeración que le sigue.

Ejemplo este año: 2019001

Ejemplo año que viene: 2020002

Saludos y gracias de antemano

Serapis

Debes mantener ambas numeraciones de forma indpendiente y cuando proceda actualizarlo entregando uniendo ambos valores.

Un ejemplo:

Código (vb) [Seleccionar]

private s_Año as long
private s_Numero as long


public Sub Establecer(byval Año as long, byval Numero as long)
    s_Año = x
    s_Numero = x
end Sub


public function IncrementarAño as string
    s_Año = (s_Año + 1)
    IncrementarAño = (cstr(s_Año) & cstr(s_Numero))
end sub

public function IncrementarNumero as string
    s_Numero = (s_Numero +1)
    IncrementarNumero = (cstr(s_Año) & cstr(s_Numero))
end function



La primera vez usas la función 'Establecer' para pasar los datos iniciales... en lo sucesivo cualquiera de las dos funciones 'Incrementar' (según se precise).

Adicionalmente si precisas que tengan un formato específico, debes utilizar una función que le dé el formato...
Por ejemplo. al caso tu quieres que el número por su parte tenga 3 dígitos...
Código (vb) [Seleccionar]


' Añade ceros a la derecha, de un número.
Private Function FixSizeNum(ByVal Txt As String, ByVal Largo As Byte) As String
    If (Len(Txt) < largo) Then
        FixSizeNum = (String$(Largo - Len(Txt), "0") & Txt)
    Else
        FixSizeNum = Left$(Txt, Largo)
    End If
End Function


Ahora por tanto, hay que actualizar las funciones 'Incrementar'...
Código ( vb) [Seleccionar]

public function IncrementarAño as string
    s_Año = (s_Año + 1)
    IncrementarAño = (cstr(s_Año) & FixSizeNum(cstr(s_Numero),3))
end sub

public function IncrementarNumero as string
    s_Numero = (s_Numero +1)
    IncrementarNumero = (cstr(s_Año) & FixSizeNum(cstr(s_Numero),3))
end function

Con un largo de solo 3, llegarás desde 000 hasta 999, luego 2019000 hasta 2019999.
Puesto que el año, lo pasas con 4 dígitos y el primero de ellos no es 0, no precisa tal formato pués seguirán siendo 4 digitos (2019, 2020 tienen 4 dígitos).

andaluz

Muchas gracias NEBIRE