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

MySQL Discussion :

Valeurs négatives sous MySQL & navicat


Sujet :

MySQL

  1. #1
    Membre éclairé
    Homme Profil pro
    conseil et développeur en informatique industrielle
    Inscrit en
    Janvier 2006
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : conseil et développeur en informatique industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2006
    Messages : 220
    Par défaut Valeurs négatives sous MySQL & navicat
    Bonjour a tous,

    J'utilise navicat pour gérer mes bases mysql.
    depuis peu j'ai a traiter des valeurs négatives eu format integer dans la base.
    Je ne parviens pas a afficher le signe et la valeur correcte dans une vue construite sous navicat.

    quelles sont les précautions a prendre pour parvenir a un résultat correct

    exemple : j'ai actuellement un champs déclaré en integer dont les valeurs lues par navicat oscillent de 65268 a 338. la valeur 65268 est évidemment négative
    je lis des valeurs [0..65535] dans un automate, comment les écrire dans la BD dont le champs serait smallint afin peut-être que cette fois le signe soit reconnu
    J'utilise Delphi xe5 et Mydac pour l'acquisition et l’écriture BD

    d'avance merci

  2. #2
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 883
    Par défaut
    Salut aladin95.

    Citation Envoyé par aladin95
    J'utilise navicat pour gérer mes bases mysql.
    Si le problème concerne navicat, adressez-vous à eux.

    Si le problème concerne mysql, dans ce cas, donnez nous :
    --> le descript de vos tables.
    --> la requête
    --> le jeu d'essai en entrée
    --> le résultat attendu.

    Citation Envoyé par aladin95
    Je ne parviens pas à afficher le signe et la valeur correcte dans une vue construite sous navicat.
    Comment pouvons nous connaitre la nature de votre problème puisque vous ne nous communiquez aucune requête.

    Citation Envoyé par aladin95
    j'ai actuellement un champs déclaré en integer dont les valeurs lues par navicat oscillent de 65268 a 338. la valeur 65268 est évidemment négative
    Si dans votre colonne, vous avez des valeurs allant de 338 jusqu'à 65268, le type n'est pas integer mais "smallint unsigned".
    De ce fait, vous ne pouvez pas avoir un signe, puisque tous vos nombres sont stockées en valeur absolue.

    Citation Envoyé par aladin95
    je lis des valeurs [0..65535] dans un automate, comment les écrire dans la BD dont le champs serait smallint afin peut-être que cette fois le signe soit reconnu
    Si vos nombres sont stockés sans signe, pourquoi vouloir afficher un signe ?

    Le type "smallint unsigned" a une amplitude allant de 0 jusqu'à 65535.
    Le type "smallint" a une amplitude allant de -32768 jusqu'à +32767.

    Si vous désirez transformer vos nombres absolues en nombres signées, il suffit de faire x - 32768 et c'est tout.
    --> https://dev.mysql.com/doc/refman/8.0...ger-types.html

    La bonne question que vous devez vous poser est pourquoi ces nombres sont stockées sans signe ?
    Ce n'est pas sans raison que cela a été stockée dans la base de données.

    @+

  3. #3
    Membre éclairé
    Homme Profil pro
    conseil et développeur en informatique industrielle
    Inscrit en
    Janvier 2006
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : conseil et développeur en informatique industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2006
    Messages : 220
    Par défaut valeurs négatives sous mysql & navicat (issues d'un automate)
    curieux cette maniéré de répondre ligne après ligne sans avoir pris connaissance du propos dans son entier. enfin passons.

    Pour les gens qui utilisent les protocoles modbus ou similaire, il n'y a pas de requête d'interrogation spécifiques pour valeurs signées. On ne manipule que des entiers non signés 16 bits (WORD).

    Je n'avais jusqu’à présent pas eu ce genre de problème et j'ai pensé, par erreur, qu'il s'agissait d'un problème base de données.
    La solution que j'ai trouvé consiste dès la récupération des données que l'on sait signées dans l'automate, de faire une conversion de la table word (integer non signé 16 bits) en une table smallint (integer signé 16 bits).

    Exemple d'un code de requête modbus en Delphi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    var
      WData : array[0..x] of word;
      Sdata : array[0..x] of smallint
     
    code :
     
        If MBusGr.ReadHoldingRegisters(Adrs,Long,wdata) then begin
          for i := 0 to long-1 do Sdata[i] := Wdata[i];
          ... 
        end;
    Puis les valeurs de la table sdata peuvent être écrites sans problèmes dans des champs int de la base mysql

    merci a tous

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

Discussions similaires

  1. [MySQL] comment récupérer une valeur booleenne d'un formulaire pour implémenter sous mysql
    Par ben.IT dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/02/2009, 07h54
  2. [D6][ADO][MYSQL] problème avec les valeurs négatives
    Par shugxg dans le forum Composants VCL
    Réponses: 8
    Dernier message: 06/02/2009, 09h52
  3. Affectation automatique de valeurs sous MySQL?
    Par tttttt dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 23/06/2006, 09h32
  4. Réponses: 4
    Dernier message: 23/09/2005, 14h15
  5. [CR] transmission valeur Etat/sous etat
    Par Antichoc dans le forum Formules
    Réponses: 2
    Dernier message: 21/11/2003, 11h23

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