Apúntate a la Zona De Descargas Reservadas (ZDDR). Solo son 20 Euros
Con solo 20€ ayudarás
a mantener el foro.


Seguir a udias en Twitter
Directorio de Empresas de Foros de informática


Todo lo que sueñas, se puede diseñar.
We build your dreams.

 - Principal - Responder - Estadísticas - Registrarse - Buscar - Lista de usuarios -  - Zona de Descargas
 -Privacidad y política de cookies -
Ayuda al foro con tu donación

Búsqueda en los foros

Foros en Udias.com / FileMaker / Evitar registros Duplicados en Función ALEATORIO
Autor Mensaje

Miembro

Habitual

  Karma         116

#1 Publicado: 10 Ene 2020 21:21 - Editado por: jrsepul2000



Hola, A ver si me podeis ayudar


Tengo un campo tipo CALCULO, llamado Serial que se genera mediante una función cuya labor es generar un numero aleatorio comprendido entre 1000 a 9999.

Al crear un registro nuevo, se le asigna ese numero aletorio mediante la función por CALCULO.

El problema es que en alguna prueba que he realizado me ha colado Numeros aleatorios duplicados.

¿Habría alguna manera de evitar que se crearan duplicados desde la misma función o desde un guión?

Gracias de antemano.

La Función se llama aleatorio

Let([

// If zero is randomin interval the start parameter has to be incresed
start = If ( start < 0 ; start - 1 ; start );

// If interval is below zero the stop parameter must be decresed
stop = If ( start < 0 and stop < 0 ; stop - 1 ; stop );

// Calculates random interger value
result = Truncate ( ( Random * ( stop - ( start - 1 ))) + start ; 0 )

];

// Return result
result

)


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
os x y filemaker 12

Moderador


  Karma               8050

#2 Publicado: 10 Ene 2020 21:42



Hola.
La generación aleatoria es eso, generación aleatoria. No garantiza que cada vez se genere un número diferente. Siempre habrá colisión en un momento dado.
Si lo que pretendes es usar una ID única para cada registro deberías probar con la función Get ( UUID ). Ésta te generará un código (hexadecimal) único para cada registro sin riesgo de colisión.

Sls.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Pon tu sistema operativo y versión de FileMaker en tu perfil. Windows 10 Pro + FileMaker Pro 11/19

Miembro

Habitual

  Karma         116

#3 Publicado: 10 Ene 2020 21:49



Entiendo, pero el sistema es para un concurso y tienen que ser números aleatorios entre el 1000 y 9999 que se van asignando a los concursantes.

¿Mediante guión se podría hacer?, comprobar si existe y si es TRUE, "provocar" que lo vuelva a generar, intentando hacerlo de manera transparente al usuario.

No se me ocurre otra manera.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
os x y filemaker 12

Moderador


  Karma               8050

#4 Publicado: 11 Ene 2020 00:32



Hola.
Puedes crear un campo global en tipo texto en el que ir poniendo cada número. Pero antes de eso, justo al generar el número aleatorio en una variable puedes comprobar si existe en el campo global.

Establecer variable [$Aleatorio ; Fórmula que genera aleatorio ]
If [ PatternCount ( CampoGlobal ; $Aleatorio ) = 0]
Establecer campo [Global ; Global & ¶ & $Aleatorio]
Nuevo registro
Establecer campo [Concursante ; $Aleatorio]
Else
Ejecutar guión [Nombre de este guión]
End if


Sls.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Pon tu sistema operativo y versión de FileMaker en tu perfil. Windows 10 Pro + FileMaker Pro 11/19

Miembro

Constante

  Karma             1122

#5 Publicado: 13 Ene 2020 11:28 - Editado por: Tarantelo



Quizás en un caso como este, la mejor solución sería hacer una consulta SQL, que comprueba si ya existe el número. Lo digo por no tener esos posibles 8000 números en una variable.

Te paso un ejemplo. Pero deberías ampliarlo, para tener en cuenta que podrías intentar generar mas números de los que puedes tener. En este caso son 9000, este ejemplo tal y como está quedaría en bucle si intentas generar el código 9001. Pero lo puedes controlar, verificando el número de registros o con una variable que se incremente por cada número que se intente generar. El valor de la variable no puede ser mayor de NumMax - NumMinimo +1.

SerialUnico.rarArchivo adjunto: SerialUnico.rar
 

Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Windows 10 Pro (64 Bits), FM Pro 15 Adv

Miembro

Constante

  Karma             1122

#6 Publicado: 13 Ene 2020 11:57



¿Te valió? ¿Puede cerrar el hilo alguien que no sea el que lo creó?


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Windows 10 Pro (64 Bits), FM Pro 15 Adv

Moderador


  Karma               6152

#7 Publicado: 13 Ene 2020 12:08



Tarantelo:
¿Puede cerrar el hilo alguien que no sea el que lo creó?

Hola Tarantelo, solo los Moderadores y el propio titular del tema pueden darlo como resuelto.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Si te fue de utilidad el foro, valoralo y hazte forero VIP, tu nombre de usuario será verde mostrando que aportas ayuda económica.
Hacerte VIP es necesario para mantenerlo abierto, recuerda que el foro vive sin ayuda de FileMaker y sus distribuidores.
W10 Pro x64 - FileMaker 19 (x64)

Miembro

Constante

  Karma             1122

#8 Publicado: 13 Ene 2020 12:41



Es que me extrañó que no hiciese ningún comentario y lo pusiese como resulte.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Windows 10 Pro (64 Bits), FM Pro 15 Adv

Moderador


  Karma               6152

#9 Publicado: 13 Ene 2020 13:28



pues si, la verdad


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Si te fue de utilidad el foro, valoralo y hazte forero VIP, tu nombre de usuario será verde mostrando que aportas ayuda económica.
Hacerte VIP es necesario para mantenerlo abierto, recuerda que el foro vive sin ayuda de FileMaker y sus distribuidores.
W10 Pro x64 - FileMaker 19 (x64)

Miembro

Habitual

  Karma         116

#10 Publicado: 13 Ene 2020 22:26



Perdon a todos, lo ví por la mañana, hice pruebas y efectivamente sirve adaptandolo a mi proyecto, despues surgieron problemas personales graves y ya no pude contestar, mañana seguire adaptando la solución de Tarantelo, me parece muy currada.

Agradezco a todos los del foro que siempre que pregunto se vuelcan en buscar soluciones, en muchos casos incluso complejas y personalizadas como es el caso.

Muchas gracias a Tarantelo y flusheddata por las aportaciones y por supuesto al siempre presente Alatriste poniendo orden.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
os x y filemaker 12
Su respuesta

Estilo Negrillas  Estilo Italico  Estilo Subrayado  URL De La Imagen  URL De La Web  Preformatted Text  YouTube URL  Sin código BB
Emoticones
:) ;) :up: :down: :biglol: :confused :cool: :mad: :sad: :shame: :smirk: :tongue: ... Más  Emoticones desactivados
Color de texto
Texto en negro Texto en blanco Texto en gris Texto en rojo Texto en azul Texto en verde Texto en rojo oscuro Texto en cian Texto en azul oscuro Texto en púrpura Texto en amarillo Texto en rosa Texto en naranja Texto en verde oliva Texto en marrón



 » Usuario  » Contraseña 
Solo Usuarios Registrados Pueden Postiar Aqui.
 

Tópicos relacionados con Evitar registros Duplicados en Función ALEATORIO

Evitar Registros duplicados
Evitar registros duplicados
Como evitar registros duplicados al importar de Excel
Buscar registros existentes para evitar crear duplicados
Evitar envíos de email duplicados


Conectados: Invitados - 11
Miembros - 0
En verde usuarios ZDDR

Realizado con miniBB © 2001-2020
Para Udias.com © 1996-2020
Hosting con Interdominios