Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: andaluz en 2 Julio 2019, 11:12 am



Título: Formato Id
Publicado por: andaluz en 2 Julio 2019, 11:12 am
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


Título: Re: Formato Id
Publicado por: Serapis en 2 Julio 2019, 19:20 pm
Debes mantener ambas numeraciones de forma indpendiente y cuando proceda actualizarlo entregando uniendo ambos valores.

Un ejemplo:

Código
  1. private s_Año as long
  2. private s_Numero as long
  3.  
  4.  
  5. public Sub Establecer(byval Año as long, byval Numero as long)
  6.    s_Año = x
  7.    s_Numero = x
  8. end Sub
  9.  
  10.  
  11. public function IncrementarAño as string
  12.    s_Año = (s_Año + 1)
  13.    IncrementarAño = (cstr(s_Año) & cstr(s_Numero))
  14. end sub
  15.  
  16. public function IncrementarNumero as string
  17.    s_Numero = (s_Numero +1)
  18.    IncrementarNumero = (cstr(s_Año) & cstr(s_Numero))
  19. end function
  20.  
  21.  

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
  1.  
  2. ' Añade ceros a la derecha, de un número.
  3. Private Function FixSizeNum(ByVal Txt As String, ByVal Largo As Byte) As String
  4.    If (Len(Txt) < largo) Then
  5.        FixSizeNum = (String$(Largo - Len(Txt), "0") & Txt)
  6.    Else
  7.        FixSizeNum = Left$(Txt, Largo)
  8.    End If
  9. End Function
  10.  

Ahora por tanto, hay que actualizar las funciones 'Incrementar'...
Código
  1. public function IncrementarAño as string
  2.    s_Año = (s_Año + 1)
  3.    IncrementarAño = (cstr(s_Año) & FixSizeNum(cstr(s_Numero),3))
  4. end sub
  5.  
  6. public function IncrementarNumero as string
  7.    s_Numero = (s_Numero +1)
  8.    IncrementarNumero = (cstr(s_Año) & FixSizeNum(cstr(s_Numero),3))
  9. end function
  10.  
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).


Título: Re: Formato Id
Publicado por: andaluz en 3 Julio 2019, 12:47 pm
Muchas gracias NEBIRE