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

Assembleur Discussion :

Dépassement de capacité dans une base de données


Sujet :

Assembleur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 86
    Points : 56
    Points
    56
    Par défaut Dépassement de capacité dans une base de données
    Bonjour à tous,
    je ne sais pas sur quel forum poser ma question et je n'ai pas trouvé à ce jour de FAQ pour y répondre. Comme j'ai fait un tout petit peu d'assembleur au début des mini-ordinateurs j'ai pensé que là je pourrais avoir la réponse.

    j'utilise une base de données spécifique dans laquelle on entre en particulier dans un champ le produit d'un prix unitaire par un nombre d'objets.
    En sortant un état des des entrées il y a des champs où l'on trouve des valeurs négatives ce qui a priori est impossible.
    L'entrée est faite en 2 temps : un code barre numérique faisant référence à un objet et un prix unitaire, puis un nombre d'objets entré au clavier.
    Le SAV du logiciel me dit qu'après l'entrée du prix unitaire, un temps d'inattention et au lieu d'entrer le nombre d'objets on relit le code barre ce qui entraine un prix faramineux qui peut dépasser la capacité de stockage du nombre et changer le bit de signe. On peut concevoir des parades, mais je suis dubitatif sur la possibilité d'avoir accès au bit de signe avec une somme de nombres très grands.
    Ma question porte donc sur la possibilité de modifier le bit de signe en cas de dépassement de capacité pour le nombre.
    Merci de votre avis.

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 369
    Points : 23 623
    Points
    23 623
    Par défaut
    Bonjour,

    Déjà, quel système de base de données utilises-tu ? Un serveur SQL ou un système plus modeste en local ?

    Ensuite, tout dépend du type de donnée que tu as utilisé pour représenter ton prix. Quand je dis « tu », c'est parce que je ne sais pas si c'est toi qui administres ta base ou si c'est à la charge des concepteurs du logiciels que tu utilises. Soit c'est un nombre flottant (type float ou double), soit c'est un NUMERIC(n,d) avec un nombre de décimales fixées, soit c'est un bête entier sur 32 bits, divisé éventuellement par 100 pour gérer les centimes.

    Il y a de fortes chances, surtout si le logiciel a été écrit en Java, que les concepteurs se soient arrêtés à la troisième option. Dans ce cas, le bug peut soit se trouver dans la base, soit provenir de la manière dont le programme interprète les nombres.

    Il faut savoir qu'en binaire naturel, les nombres signés et non signés sont écrits de la même façon, et que c'est la manière dont on les lit qui fait la différence (y compris au niveau du micro-processeur même). C'est de la même façon que sur un compteur kilométrique, « 99999999 » peut représenter soit presque cent millions de kilomètres, soit un seul kilomètre en marche arrière.

    Sur un int 32 bits signé donc, la gamme des valeurs possibles s'étend de -2.147.483.648 à 2.147.483.647. Les codes barres s'étendant sur 13 chiffres, il est tout-à-fait possible de rentrer dans le domaine des valeurs interdites. Il reste que c'est pour le moins une faiblesse de conception, pour ne pas dire un code très sale.

    En fonction de tes réponses, j'orienterai ton post vers le bon forum.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 86
    Points : 56
    Points
    56
    Par défaut
    Merci déjà pour cette réponse.
    il s'agit du logiciel ELLIPSES de la société TMIC pour la gestion d'une librairie.
    Normalement je ne rentre pas dans les problèmes techniques de ce logiciel, mais comme j'arrive à des incompréhensions d'utilisation, je cherche à comprendre.
    c'est je pense un serveur SQL installé en local(3 postes) qui peut être contrôlé à distance par le SAV du concepteur. J'ignore le format du nombre concerné, mais le SAV peut peut-être me le dire, s'il veut bien.
    J'ai déjà demandé à mon interlocuteur de prévoir quelque chose pour éviter cette situation.
    Je vais essayer d'en savoir un peu plus.

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 369
    Points : 23 623
    Points
    23 623
    Par défaut
    Difficile d'être plus catégorique sans voir les données elles-mêmes, effectivement.

    As-tu remarqué d'autres irrégularités, telles que des numéros de code barre aux mauvais endroits, sur les lignes qui contiennent ces prix négatifs ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 86
    Points : 56
    Points
    56
    Par défaut
    effectivement, il devrait y avoir une valeur de code barre dans le nombre d'objet par exemple. j'ai demandé des informations complémentaires au SAV.
    je pense que pour l'instant il vaut mieux clore la discussion. je reviendrai si j'ai d'autres informations.
    Faut-il mettre "résolu"
    Merci encore

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 369
    Points : 23 623
    Points
    23 623
    Par défaut
    Citation Envoyé par platon1 Voir le message
    Faut-il mettre "résolu" ?
    Oui, en effet.
    Tu pourras éventuellement repasser à l'état non résolu ultérieurement, si besoin.

    Merci encore
    À ton service.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. intégrer un fichier image dans une base de donnée?
    Par Lody dans le forum Requêtes
    Réponses: 9
    Dernier message: 16/03/2006, 19h08
  2. inserer des images dans une base de données
    Par alilou04 dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/06/2004, 18h54
  3. les images dans une base de données
    Par houhou dans le forum Bases de données
    Réponses: 8
    Dernier message: 22/06/2004, 14h27
  4. [SYBASE]Libérer espace libre dans une base de données ?
    Par le_parrain dans le forum Sybase
    Réponses: 3
    Dernier message: 14/05/2004, 09h36
  5. [Strategie][Java][XML] Import dans une base de données
    Par nad dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 23/09/2002, 11h12

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