Access - Generar caracteres aleatorios en el Valor predeterminado de un Campo

   
Vista:

Generar caracteres aleatorios en el Valor predeterminado de un Campo

Publicado por yome (4 intervenciones) el 18/08/2015 02:30:13
Mi idea sería que al crear una fila en la tabla, automáticamente me genere en un campo caracteres con esta estructura aqgxkw22AMm9u2Ozc2xrW1pjTyi, he conseguido generarlo pero siendo este numérico, usando este valor predeterminado:
1
=Int((65568488855968554538741354643-0+1)*NúmAleat()+0)

Gracias y saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Neckkito

Generar caracteres aleatorios en el Valor predeterminado de un Campo

Publicado por Neckkito (1104 intervenciones) el 18/08/2015 08:45:31
Hola!

Prueba si esta función te sirve:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
...
Public Function fncValorAleatorio() As String
    Const cotaInferior As Byte = 48
    Const cotaSuperior As Byte = 122
 
    Dim elNum As Long
    Dim elValor As String
    Dim i As Byte
 
    For i = 1 To 28
Repito:
        Randomize
        elNum = CLng(((cotaSuperior - cotaInferior + 1) * Rnd()) + cotaInferior)
        If (elNum > 57 And elNum < 65) Or (elNum > 90 And elNum < 97) Then
            GoTo Repito
        End If
        elValor = elValor & Chr(elNum)
    Next i
    fncValorAleatorio = elValor
End Function
...

Los números que ves en el código salen de su equivalencia en ASCII. Si te pica la curiosidad los he sacado de esta página: http://ascii.cl/es/

Saludos,
Neckkito
http://siliconproject.com.ar/neckkito/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Generar caracteres aleatorios en el Valor predeterminado de un Campo

Publicado por yome (4 intervenciones) el 18/08/2015 16:22:29
Gracias Neckkito por la elaboración de la función, el problema que tengo ahora es averiguar como introducir la función, llevo un par de semanas con Access y todavía no he usado VB con él, según he estado leyendo tengo que hacer un módulo y en él introducir dicha función
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Public Function fncValorAleatorio() As String
Const cotaInferior As Byte = 48
Const cotaSuperior As Byte = 122
 
Dim elNum As Long
Dim elValor As String
Dim i As Byte
 
For i = 1 To 28
Repito:
Randomize
elNum = CLng(((cotaSuperior - cotaInferior + 1) * Rnd()) + cotaInferior)
If (elNum > 57 And elNum < 65) Or (elNum > 90 And elNum < 97) Then
GoTo Repito
End If
elValor = elValor & Chr(elNum)
Next i
fncValorAleatorio = elValor
End Function

Una vez creado el módulo y introducido tal cual lo anterior, intento agregar la función (fncValorAleatorio) en el Campo de la tabla pero no me la reconoce, tampoco sé exactamente el procedimiento y perdona si estoy diciendo alguna barbaridad...

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Generar caracteres aleatorios en el Valor predeterminado de un Campo

Publicado por Enrique Heliodoro (1663 intervenciones) el 18/08/2015 17:41:54
Las tablas no admiten funciones creadas por el usuario, normalmente se utiliza un intermediario (un formulario) el cual manejara la tabla y permitirá manipular los datos.

Cada tipo de objeto en Access tiene una función especifica:
Las tablas ==> almacenar de datos
Las consultas ==> conjugar las tablas para obtener conjuntos de datos
Los formularios ==> manipular los datos (que provienen de tablas o consultas)
Los informes ==> presentación de resultados (pensados para enviarlos a las impresora o similar)
Las macros ==> generar acciones repetitivas (es un paso intermedio entre nada y VBA)
El VBA ==> como si fuera una macro pero sin asistente y mas potente que las macros

Te estas saltando un paso: el formulario que permite manipular la tabla (y en que se puede utilizar esa función).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Neckkito

Generar caracteres aleatorios en el Valor predeterminado de un Campo

Publicado por Neckkito (1104 intervenciones) el 18/08/2015 21:27:39
Hola Yome:

Como bien comenta Enrique no puedes introducir una llamada a una función creada por ti directamente en la tabla.

Te pongo un ejemplo de cómo podrías utilizar el código (ten en cuenta que el evento que te propongo es eso, sólo una propuesta, y quizá puedas emplear otro evento y/o otro campo que estén más acordes con tus necesidades):

- Créate un formulario sobre esa tabla (que evidentemente tendrá el campo donde quieres guardar el aleatorio, pero sin valor por defecto. Yo lo llamaré [CodAleatorio] para que puedas seguir la explicación).
- Pulsa la combinación de teclas ALT+F11 y se te abrirá el editor de VBA (el VBE)
- En el VBE te vas a menú Insertar -> Módulo
- En el módulo creado, bajo la línea (o líneas) Option, le pegas la función
- Vuelve a tu formulario (en vista diseño)
- Selecciona el campo [CodAleatorio] y saca sus propiedades -> Pestaña eventos -> Al recibir el enfoque (y, como te decía antes, la selección del campo y del evento constituyen sólo una propuesta).
- Le generas este código en ese evento:
...
Private Sub...
If isnull(me.CodAleatorio.value) then
me.CodAleatorio.value=fncValorAleatorio()
End if
End sub
...

De esta manera, cada vez que "entres" en el campo [CodAleatorio], si este no tiene valor se te creará ese código aleatorio que necesitas.

Espero que te vaya bien.

Un saludo,

Neckkito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Generar caracteres aleatorios en el Valor predeterminado de un Campo

Publicado por yome (4 intervenciones) el 19/08/2015 11:53:03
Hola de nuevo,

Muchas gracias por la explicación tan buena, en el formulario me viene perfecto también, la única pega es que de vez en cuando aparece: iaAWrEXIw997sitUgf28{TjHy1Ox, como ves se cuela la llave "{".

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Neckkito

Generar caracteres aleatorios en el Valor predeterminado de un Campo

Publicado por Neckkito (1104 intervenciones) el 19/08/2015 12:00:32
Cambia la línea:

If (elNum > 57 And elNum < 65) Or (elNum > 90 And elNum < 97) Then

por

If (elNum > 57 And elNum < 65) Or (elNum > 90 And elNum < 97) or elNum=123 Then

Así debería funcionarte.

Saludos,

Neckkito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Generar caracteres aleatorios en el Valor predeterminado de un Campo

Publicado por yome (4 intervenciones) el 19/08/2015 12:46:59
Ya parece que perfecto, muchísimas gracias crack.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar