Bonjour,
Je souhaiterais générer un nombre de huit chiffres aléatoire unique, à l'image de la fonction timestamp de php qui génère un nombre en fonction de la date et l'heure.
Si quelqu'un a une piste.
Bonjour,
Je souhaiterais générer un nombre de huit chiffres aléatoire unique, à l'image de la fonction timestamp de php qui génère un nombre en fonction de la date et l'heure.
Si quelqu'un a une piste.
je ne veux pouvoir généré deux fois le même nombre. Dans mon appli future, je vais m'en servir pour un numéro de commande.
Pourquoi ne pas utiliser les numéroautomatique de ta base de données ?
Tu peux aussi créer le tout premier nombre à 8 chiffres qui serait par exemple 00000001 et tu le retiens dans ton application. Puis chaque bon de commande tu fais ce numéro + 1.
Parce que s'il sagit d'un compteur, il faudra que je regarde quel est le dernier numéro de commande dans un dossier d'archivage et ca risque d'être fastidieux.
Le problème cest que quand je fermerai l'appli, je ne saurait plus ou le compteur en est ...Envoyé par eagleleader
J'ai pas de base, il s'agit d'un export en fichier CSV !Envoyé par eagleleader
Lut,Envoyé par Overflow64
Est-ce plus fastidieux de "regarder" un numéro dans un dossier d'archive que de générer un nombre à 8 chiffres à chaque fois.
De plus, grande question : Comment sauras-tu si un nombre n'a pas déjà été utilisé ????
Bon courage
Théo
il existe les fichiers (txt ou ini) pour pouvoir retenir des informations. Mais ceux-ci peuvent être victimes de l'effacement. Tu peux utiliser aussi la base de registre et créer une clé pour ton application dans laquelle tu retiens le dernier nombre et tu modifie cette clé à chaque nouvelle commande.
Tout simplement, n'existe-t-il pas en vb une fonction qui génère un nombre sur 8 chiffres en fonction du temp comme timestamp en php ? c'est l'objet de ma question ...
Re,
Voici alors une solution où tu auras un numéro "unique" basé sur la date et l'heure de la machine
Cette solution te donne un numéro à 14 chiffres...
Bonne continuation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Dim maDate As Date Dim jour, mois, annee, heures, minutes, secondes As String Dim temps As String Dim tableau maDate = Now jour = Format(maDate, "dd") mois = Format(maDate, "mm") annee = Format(maDate, "yyyy") tableau = Split(Format(maDate, "hh:mm:ss"), ":") heures = tableau(0) minutes = tableau(1) secondes = tableau(2) monCode = annee & mois & jour & heures & minutes & secondes ' format texte
Théo
Je suis conscient qu'il y a peu de chances que ca arrive mais, si quelqu'un change la date et l'heure et a un nombre déja existant ?Tout simplement, n'existe-t-il pas en vb une fonction qui génère un nombre sur 8 chiffres en fonction du temp comme timestamp en php ? c'est l'objet de ma question ...![]()
Hello, je ne connais pas VB6 mais, n'y a-t-il pas l'équivalent de VBA :
Tu remplaces la date par now ou today ou date + heure (en VB, je ne sais pas) et tu le transformes en N° de série.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 MaDate = "12 octobre 2005 12:30:12" ' Définit la date. CodeDate = cstr(Format(CDate(MaDate), "0.000")*1000)
L'intérêt de la méthode étant qu'elle est réversible et que tu peux, à partir du N° de série, retrouver la date de la commande... et l'heure... sinon les minutes (pas les secondes...) si toutefois tu peux faire ça en VB...
A tout hasard
A+
C'est pour cela que j'ai rajouté les secondes dans mon code cf post précédent car techniquement parlant il est quasiment impossible (sauf de vouloir le faire exprèsEnvoyé par Mandalar
) d'avoir 2 fichiers créés dans la même seconde...
Théo
n'est-il pas possible d'avoir le temps UNIX (cad depuis le 1er janvier 1970 il me semble) ?
Il s'agit d'un nombre à huit chiffres il me semble. Le format (8 chiffres) est imposé par le client car dans une autre de ses applis, il a un numéro a 8 chiffres.
Et si l'utilisateur change l'heure ?
On en revient au même![]()
Stocker la valeur maximum dans un fichier ini peut être une bonne alternative![]()
Dans ce cas tu passe par le code suivant:Envoyé par Overflow64
Ceci te donne un temps depuis le 1er janvier 1900
Code : Sélectionner tout - Visualiser dans une fenêtre à part CStr(Int(CDbl(Now) * 1000))
par contre avec la réduction à 8 chiffres cela fait un nouveau code toutes les 1 min 30 à 2 minutes ...
donc tu risque de ne pas avoir une clé de fichier unique ...
Bon courage
Théo
Partager