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

WinDev Discussion :

Nombre aléatoire pour code barre


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 16
    Points : 15
    Points
    15
    Par défaut Nombre aléatoire pour code barre
    Bonjour à tous,

    J'aimerai savoir comment faire pour générer un nombre aléatoire compris entre 000000000000 et 999999999999, en sachant que ce nombre sera le code d'un code-barre qui sera enregistré dans une table GENCODE, et que ce nombre généré ne pourra être sorti qu'une seule fois dans la table.

    Je sais comment générer un nombre aléatoire, mais je ne sais pas demander a windev que ce nombre ne soit pas un doublon avec un autre dans une même table.

    Merci par avance !

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Je vois deux solutions:
    1. A chaque génération, chercher dans la base si le numéro est déjà utilisé. C'est simple, mais le temps de traitement ira en s'allongeant avec le temps
    2. Créer un fichier des nombres disponibles.

    J'ai mis en place la deuxième solution. Le fichier contient deux rubriques: le nombre, et le rang.
    Pour remplir ce fichier, j'ai remplis une table mémoire avec les nombres disponibles, puis dans une boucle je prends une ligne au hasard, et je l'ajoute dans le fichier, en incrémentant le rang.

    Ainsi pour avoir un nombre, il suffit de prendre le premier enregistrement de ce fichier, de récupérer le nombre et de supprimer l'enregistrement.
    Avec un index sur le rang, la recherche sera très rapide.

    Tatayo.

  3. #3
    Membre émérite
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    999
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 999
    Points : 2 526
    Points
    2 526
    Par défaut
    Pourquoi ne pas commencer à 000000000001 et
    avant chaque génération d'un nouveau code
    aller chercher le dernier créé en faisant +1 pour ce nouveau ?
    Quel est l'intérêt de "aléatoire" ?

    Attention, un gencod libre (non issu d'un founisseur) doit commencer par "020"

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Citation Envoyé par serendib Voir le message
    Pourquoi ne pas commencer à 000000000001 et
    avant chaque génération d'un nouveau code
    aller chercher le dernier créé en faisant +1 pour ce nouveau ?
    Quel est l'intérêt de "aléatoire" ?
    Le Gencod en question peut aussi être utilisé pour autre chose qu'identifier des produits: carte d'accès, numéro de chèque cadeau... pour lesquels un numéro aléatoire à un sens.

    Tatayo.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 16
    Points : 15
    Points
    15
    Par défaut
    Merci à tous pour vos réponses !
    Effectivement je n'ai aucun interet a avoir des nombres aleatoires, je peux avoir des nombres qui se suivent cela n'est pas un probleme. Pour reprendre l'idée de tatayoyo, j'ai en fait ouvert une feuille excel, mis en A1 la formule =ALEA()*(999999999999-100000000000)+100000000000
    (J'ai besoin que mes nombres aient 12 chiffres d'ou ces donnees astronomiques)
    Et j'ai fait une recopie vers le bas sur 90000 lignes ( je n'aurait besoin que de quelques milliers de lignes par an, ça me laisse un peu de marge =)
    Ensuite pour eviter les doublons jai fait onglet 'donnees ´ puis supprimer les doublons sous excel 2007 et voila le travail =)

    Comment dois-je proceder sous windev pour avoir une suite de nombres aleatoires sans doublons commençant par exemple par 1234567 et contenant 12 chiffres au total ?(123456700000, 123456700001...)

    Merci beaucoup mes ptit loups =)

  6. #6
    Membre émérite
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    999
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 999
    Points : 2 526
    Points
    2 526
    Par défaut
    Dans ce cas fais comme je t'ai dit :
    Création du 123456700000
    et à chaque demande de création : +1 sur le dernier lu (prélablement).
    aucun doublon possible (si le code est déclaré clé unique)
    Ca me parait évident, ou j'ai rien compris...

  7. #7
    Membre émérite
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    999
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 999
    Points : 2 526
    Points
    2 526
    Par défaut
    Bonjour Tatayo,

    Citation Envoyé par tatayo Voir le message
    Le Gencod en question peut aussi être utilisé pour autre chose qu'identifier des produits: carte d'accès, numéro de chèque cadeau... pour lesquels un numéro aléatoire à un sens.

    Tatayo.
    Certes, mais quel est l'intérêt d'aléatoire, quelque soit ce qu'on en fait.
    C'est une question, juste par curiosité.

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Si les nombres se suivent, le fait d'avoir le code 123456 indique qu'il y a de forte chance que les codes 123455 et 123457 existe aussi.
    Ce qui n'est pas le cas si les nombres sont aléatoires.

  9. #9
    Membre émérite
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    999
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 999
    Points : 2 526
    Points
    2 526
    Par défaut
    Citation Envoyé par tatayo Voir le message
    Si les nombres se suivent, le fait d'avoir le code 123456 indique qu'il y a de forte chance que les codes 123455 et 123457 existe aussi.
    Ce qui n'est pas le cas si les nombres ont aléatoires.
    Ben, Non !
    Si on décide de faire une numérotation qui se suit, la première création porte le numéro 1, donc si avant de faire une deuzième création
    je lis le dernier, j'obtiens 1 auquel je fais plus 1 pour créer le 2.
    Si le 12345 existe il me créera le 12346, et ainsi de suite.


    Si comme bigcat, je veux commencer à 123456700000 je le créé.
    Ensuite pour les nouvelles créations je fais :

    BorneD="123456700000"
    BorneF="123456799999"
    Je filtre sur ces deux bornes et je lis le dernier.
    Il lui suffira de faire plus 1 sur ce dernier pour constituer un nouveau code.
    Pas de doublons possibles si ce code est clé unique.

    C'est d'ailleurs cette méthode que j'utilise pour permettre à mes Clients de créer leurs propres codes en dehors des normes gencod.
    Ca marche chez eux depuis des années sans qu'un doublon soit venu mettre la zizanie.
    Je fais pareil pour ma numérotation de facture (AAAAMMNuméro)

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    On ne s'est pas compris.
    Je ne parle pas de génération, mais d'utilisation.
    Si par exemple j'utilise ces codes pour des chèques cadeau sur un site Internet.
    Je donne à un client le chèque cadeau 123456.
    S'il est un peu futé (et malhonnête), il peut tenter d'utiliser les chèques cadeau 123455, 123454...
    Alors que si les numéros ne se suivent pas, il a très peu de chance de tomber sur un numéro existant.

    Sinon je te rejoins, pour un code barre de produit, un numéro de facture... un simple compteur suffit amplement.

    Tatayo.

  11. #11
    Membre émérite
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    999
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 999
    Points : 2 526
    Points
    2 526
    Par défaut
    En effet, nous ne parlions pas de la même chose, et connaissant ta compétence, je ne comprenais plus rien.
    Vu ainsi, ça change tout.
    Désolé, dans ce cas, de ma démo ridicule, mais qui peut-être servira à BigCat car s'il n'a pas besoin de l'aléatoire,
    il n'aura pas de problème de temps de réponse avec cette méthode hyper simple.

    Cordialement.

  12. #12
    Membre régulier
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2012
    Messages : 144
    Points : 85
    Points
    85
    Par défaut
    Votre discussion est très importante pour moi. Je suis débutante.
    Veuillez me décrire le chemin a suivre pour a partir de d'une chaine de caractère, générer le code barre correspondant et l'enregistrer dans la base.

    Merci d'avance!!!

  13. #13
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Un code barre n'est qu'une représentation d'un chaine (numéro ou pas, c'est selon) qui peut être lue par un lecteur de code barre.
    Donc il n'y a rien de spécial à faire, sauf dans le cas de code barre avec une clé (EAN par exemple).

    Mais dans tous les cas, il "suffit" d'utiliser un champ code barre et de l'associée à la rubrique idoine, et le tour est joué.

    Tatayo.

  14. #14
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    @ JOLIE MIMI

    Bonsoir

    Comme on vous l'a exposé ici et dans la discussion que vous avez créée à ce sujet, un "code-barres" ou "code à barres" est essentiellement un système de représentation graphique.

    Wikipedia, dans un bref article, en donne la définition suivante :
    "Un code-barres, ou code à barres, est la représentation d'une donnée numérique ou alphanumérique sous forme d'un symbole constitué de barres et d'espaces dont l'épaisseur varie en fonction de la symbologie utilisée et des données ainsi codées"
    N'hé&sitez pas à le lire à titre d'introduction très rapide.

    Sinon, et comme toujours, notre informateur, le fameux G...

    Hemgé

  15. #15
    Membre régulier
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2012
    Messages : 144
    Points : 85
    Points
    85
    Par défaut
    Vraiment merci beaucoup, au fait c'est le principe que j'avais pas bien saisi mais avec vos explications et orientations j'arrive a générer mon code barre. Maintenant je passe au test de l'impression du code barre.

    Merci pour tout

  16. #16
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Je ne suis pas sur que ce soit vraiment ça que tu cherche, mais de ce que j'ai compris ton raisonnement ressemble un peu à celui que j'avais eu il y a quelques mois...

    Tu cherche à brouiller les pistes pour que les valeurs des codes barres ne soient pas trop "visibles" et qu'on ne puisse pas déduire des clés voisines dans ta table.

    Avec l'aide des copains du forum, j'avais mis en place un système de brouillage de la clé qui consistait à introduire des chiffres dans le code, à gauche du caractère séparateur zéro.

    Du coup, dans la table aucun risque de tomber sur des clés existantes, on utilise l'id auto incrément

    Je te renvoies éventuellement sur mon post où tu trouveras les fonctions de brouillage/débrouillage.

    http://www.developpez.net/forums/d14...-cle-publique/

    Bonne continuation
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

Discussions similaires

  1. Avoir un tableau de nombres aléatoires pour le PVC
    Par naou18 dans le forum Collection et Stream
    Réponses: 14
    Dernier message: 08/12/2012, 17h46
  2. [WD-2007] Macro pour code barre
    Par clakass dans le forum VBA Word
    Réponses: 22
    Dernier message: 23/08/2012, 16h40
  3. macro pour code barre qui ne fonctionne pas comme elle devrait
    Par scons dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/11/2009, 13h09
  4. nombres aléatoires pour remplissage cryptographique
    Par Taka's tiger dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 27/05/2007, 08h47
  5. Est ce que ça existe une api java pour code barre ?
    Par miloud dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 14/04/2005, 17h20

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