Funcion numeros aleatorios no repetidos

moshy
24 de Abril del 2003
Tengo que crear una funcion de numeros aleatorios no repetidos para dar nombre a una tabla temporal (nombre+numero_aleatorio). Estos archivos estan guardados en una carpeta, y antes de crear el numero aleatorio tengo que comprobar que no esta creado en esta carpeta. URGENTE!!!!!!!!!!!!!!

Gimiray
24 de Abril del 2003
Espero que aun no sea tarde para darte una posible solucion, existe en VFP una funcion que es SYS(2015), esta funcion te devuelve una cadena única de caracteres (10) entre letras y numeros, puedes concatenar el nombre de tu tabla a esta cadena de caracteres. El problema es que si trabajas con varias terminales (maquinas en red) puede haber duplicidad pues estas cadenas son únicas por cada maquina, pero solucionas esto agregando a tu cadena el nombre de la maquina con SYS(0).
Espero que te ayude

Luisen98
24 de Abril del 2003
Asi es, GIMIRAY esta en lo correcto. Complementando su comentario.


SYS(3) - Nombre legal de archivo

Devuelve un nombre de archivo legal que puede utilizarse para crear archivos temporales.

SYS(3): Valores devueltos
Character

Observaciones
SYS(3) puede devolver un nombre no único cuando se ejecuta sucesivamente en un PC rápido. Utilice SUBSTR(SYS(2015), 3) para crear un nombre de archivo único y válido, de ocho caracteres.

Nota Evite utilizar esta cadena en CREATE TABLE, CREATE CURSOR, SELECT INTO CUROSR y en otros comandos similares. Si se utiliza esta cadena, se generará un error, ya que un cursor o un nombre de alias válido de FoxPro no puede empezar por un número. Si ha utilizado SUBSTR(SYS(2015), 3) para crear una tabla o un nombre de cursor únicos sin agregar explícitamente como prefijo un carácter de subrayado (_) o un carácter alfabético, puede corregir el código de las maneras siguientes:
En una plataforma que admite nombres de archivo largos
Utilice SYS(2015), ya que siempre empezará por un carácter de subrayado.
En plataformas y redes que sólo admiten la convención de nomenclatura 8+3 de DOS
Modifique la expresión de asignación de nombres para que agregue explícitamente un carácter de subrayado como prefijo, como en el siguiente ejemplo:
"_"+SUBSTR(SYS(2015), 4)