IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[VB6] Génération nombre unique


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 37
    Par défaut [VB6] Génération nombre unique
    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.

  2. #2
    Membre émérite
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Par défaut
    Qu'entends tu par unique?

  3. #3
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 37
    Par défaut
    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.

  4. #4
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2003
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 274
    Par défaut
    Pourquoi ne pas utiliser les numéroautomatique de ta base de données ?

  5. #5
    Membre émérite
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Par défaut
    Citation Envoyé par Overflow64
    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.
    Alors pourquoi aléatoire?

  6. #6
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2003
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 274
    Par défaut
    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.

  7. #7
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 37
    Par défaut
    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.

  8. #8
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 37
    Par défaut
    Citation Envoyé par eagleleader
    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.
    Le problème cest que quand je fermerai l'appli, je ne saurait plus ou le compteur en est ...

  9. #9
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 37
    Par défaut
    Citation Envoyé par eagleleader
    Pourquoi ne pas utiliser les numéroautomatique de ta base de données ?
    J'ai pas de base, il s'agit d'un export en fichier CSV !

  10. #10
    Membre émérite
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Par défaut
    Citation Envoyé par Overflow64
    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.
    Lut,

    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

  11. #11
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2003
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 274
    Par défaut
    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.

  12. #12
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 37
    Par défaut
    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 ...

  13. #13
    Membre émérite
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Par défaut
    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...

    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
    Bonne continuation

    Théo

  14. #14
    Membre expérimenté Avatar de Mandalar
    Profil pro
    Étudiant
    Inscrit en
    Mai 2004
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2004
    Messages : 121
    Par défaut
    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 ...
    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 ?

  15. #15
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Hello, je ne connais pas VB6 mais, n'y a-t-il pas l'équivalent de VBA :

    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)
    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.
    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+

  16. #16
    Membre émérite
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Par défaut
    Citation Envoyé par Mandalar
    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 ...
    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 ?
    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ès ) d'avoir 2 fichiers créés dans la même seconde...

    Théo

  17. #17
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 37
    Par défaut
    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.

  18. #18
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    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

  19. #19
    Membre émérite
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Par défaut
    Citation Envoyé par Overflow64
    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.
    Dans ce cas tu passe par le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CStr(Int(CDbl(Now) * 1000))
    Ceci te donne un temps depuis le 1er janvier 1900

    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

Discussions similaires

  1. [Math / Random] Génération nombre aléatoire compris entre deux bornes
    Par oligig dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 30/06/2013, 17h23
  2. [VB6]Génération d'identifiant à partir d'une table
    Par crashyear dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 26/01/2006, 17h20
  3. Génération de nombres uniques
    Par developper dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 12/09/2005, 14h42
  4. [VB6] Treeview: nombre de node?
    Par gg78 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 02/11/2004, 10h42
  5. [VB6] [Dbgrid] Nombre de décimales
    Par elifqaoui dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 13/09/2002, 09h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo