Crear ID único en Visual Basic

Necesitaba un identificador único de 8 caracteres para nombrar un archivo. Si ya se que ya se que Windows ya permite nombres largos, pero el sistema para el que lo estoy programando, todavía corre en sistemas operativos antiguos, por lo que necesito crear un nombre de archivo único. Esta es la función que use:

Function GenerarIDUnico() As String
 
    Dim elTiempo As Double
    Dim i As Integer
    Dim idCAD As String
 
    elTiempo = Now()
 
    i = Year(elTiempo) - 2008
    If i < 0 Or i > 35 Then i = 0
    'i de 0 a 35
    If i < 10 Then
        idCAD = Chr$(Asc("0") + i)
    Else
        idCAD = Chr$(Asc("A") + i - 10)
    End If
 
    i = Month(elTiempo)
    If i < 10 Then
        idCAD = idCAD & Chr$(Asc("0") + i)
    Else
        idCAD = idCAD & Chr$(Asc("A") + i - 10)
    End If
 
    i = Day(elTiempo)
    If i < 10 Then
        idCAD = idCAD & Chr$(Asc("0") + i)
    Else
        idCAD = idCAD & Chr$(Asc("A") + i - 10)
    End If
 
    i = Hour(elTiempo)
    If i < 10 Then
        idCAD = idCAD & Chr$(Asc("0") + i)
    Else
        idCAD = idCAD & Chr$(Asc("A") + i - 10)
    End If
 
    i = Minute(elTiempo)
    idCAD = idCAD & Format$(i, "00")
 
    i = Second(elTiempo)
    idCAD = idCAD & Format$(i, "00")
 
    GenerarIDUnico = idCAD
 
End Function

La función devuelve un string, el cual contiene la cadena de texto de 8 caracteres, la cual se supone que es única, al menos por los próximos 35 años. El primer carácter de la cadena se forma tomando en cuenta el año, siendo 0 igual a 2008 y Z igual a 2043, no creo vivir tanto así que ya lo solucionara otro programador.

El segundo carácter es el mes, el tercer carácter es el día y el cuarto carácter es la hora. Estos se forma igual que el año, osea del 0 al 9 son representados con números y del 10 en adelante se representan con letras. Los siguientes dos caracteres son los minutos y los últimos 2 son los segundos.

A continuación un ejemplo del como se generaría una cadena de texto con la hora actual (por supuesto que la hora al momento en que escribí esta entrada), al ejecutar la función me regreso la siguiente cadena:

065I4537

Primer carácter: 0 es igual al año 2008
Segundo carácter: 6 es igual al mes (Junio) en número
Tercer carácter: 5 es igual al número del día del mes
Cuarto carácter: I es igual a la conversión de las 18 horas del día
Quinto y Sexto carácter: 45 los minutos de la hora
Septimo y Octavo carácter: 37 los segundos de la hora

Espero que con este ejemplo te haya quedado claro que tipo de cadena de texto única es la que genera esta función, como siempre cualquier duda, aclaración, critica o sugerencia deja un comentario.

« | »

2 Respuestas a “Crear ID único en Visual Basic”

  1. jean says:

    hola como estas

  2. Roberto says:

    Está muy bien. Sencillo, ingenioso y útil
    Gracias.
    Se puede completar con el uso de GETTICKCOUNT (milisegundos que lleva el PC encendido o lo milisegundos de la hora, que hay otra API por ahi..
    Pero se necesitarán mas de 8 caracteres, supongo.

Deja una respuesta

*