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

Access Discussion :

Type c++ double dans Access 2007


Sujet :

Access

  1. #1
    Membre habitué
    Inscrit en
    Octobre 2002
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 343
    Points : 152
    Points
    152
    Par défaut Type c++ double dans Access 2007
    Bonjour,

    Je développe en C++ et utilise une base access jusqu'ici 2003. Je stocke un nombre de type double (c++) dans un champ numérique. Un de mes clients à Access 2007, et ce type double est transformé en float ! Par conséquent ma valeur stocké dans Access 2007 est converti sur Noctets et ma valeur n'a plus de sens. Bon, le big problème est qu'il s'agit du numéro de série de l'appli....

    Je m'adresse directement au forum Access car je n'ai pas eu de réponses dans le forum C++.

    Merci et excusez moi si ma question posée n'est pas posé dans le forum approprié.

  2. #2
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Salut,

    et ce type double est transformé en float
    Si le champ est spécifié comme double : je vois mal comment il peut être transformé en float.

    Vérifie le type du champ.
    Tu devrais avoir :
    Type de données : Numérique
    Taille du champ : Réel double

  3. #3
    Membre habitué
    Inscrit en
    Octobre 2002
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 343
    Points : 152
    Points
    152
    Par défaut
    J'ai mis dans ma base de données Entier Long. Dans la base de données sous 2007, j'ai un chiffre négatif. Je n'ai pas Office2007 sur cet ordi, je regarderai chez le client comment ce type est codé.

    Je pense qu'il s'agit de Office 2007 qui me pose problème car je n'ai jamais eu ce type de problème jusqu'à présent, et il s'agit du premier déploiement sur Office 2007.

    Autre précision, lorsque j'ouvre la base de données et j'écris directement le serial dans la table, access me dit que je ne peux pas enregistrer cette donnée.

    Merci...

  4. #4
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    J'ai mis dans ma base de données Entier Long. Dans la base de données sous 2007, j'ai un chiffre négatif. Je n'ai pas Office2007 sur cet ordi, je regarderai chez le client comment ce type est codé.
    Si je comprends : la base a été créée sous 2003 et ouverte simplement sous 2007.

    Autre précision, lorsque j'ouvre la base de données et j'écris directement le serial dans la table, access me dit que je ne peux pas enregistrer cette donnée.
    Tu pourrais donner un exemple du serial.
    Le serial est écrit via du code ?
    Si oui tu peux le donner ?

  5. #5
    Membre habitué
    Inscrit en
    Octobre 2002
    Messages
    343
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 343
    Points : 152
    Points
    152
    Par défaut
    Merci de la rapidité de tes réponses.

    Voici un serial : 2218243485. Il est généré en fonction du numéro de série du disque dur, le nom de l'entreprise et d'autres calculs (permettant de ne pas retrouver le serial à partir du nom de l'entreprise et le numéro de disque dur).

    Effectivement, l'appli a été créé sous Office 2003.

    A titre d'info voici un extrait de mon code :
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    double  NumSerieHD = asNumeroSerieHD.ToDouble();
     
            //-- Initialisation des valeurs --//
            double  totsecret         = 0;
            double  codesecret        = 0;
            double  codesecretFinal   = 0;
            double  codeJr            = 0;
     
            //-- Calcul  du nom de la société en Ascii --//
            AnsiString nomSocTrim =  asSociete.Trim();
            char *val;
            AnsiString tmpChar;
            for (int i=1;  i<=nomSocTrim.Length() ;i++)
            {
                    tmpChar = asSociete.SubString(i,1);
                    val = tmpChar.c_str();
                    totsecret +=  val[0];
            }
     
            //-- Calcul final du total  secret --//
            totsecret = totsecret*120148;
     
            //-- Calcul du code secret --//
            codesecret=((((NumSerieHD*7141351)/30121952)+17034557+20011957+24071978)*29091984)/13011990;
     
            //-- Calcul du code secret final --//
            codesecretFinal = codesecret + totsecret;
     
    //------------------------------------------------------------------------------//
            // Compare le résultat trouvé avec le numéro de série enregistré                        //------------------------------------------------------------------------------//
            serialCorrect   = RoundTo(codesecretFinal,0);
            serialApp       = asSerialApp.ToDouble();
     
            if (serialApp != serialCorrect)     //-- Non enregistré pour piraté --//
                    isValide = false;
            else
                    isValide = true;
         }
         //------------------------------------------------------------------------------//
         // Retourne le résultat de la comparaison                                       //
         //------------------------------------------------------------------------------//
         return isValide;

    Merci

  6. #6
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Merci pour ton code en C++. **souvenir**

    Mais je parlais du sérial dans la base Access
    Il est stocké de quelle manière ?

    Tu dis avoir fait un test en l'écrivant manuellement et que dans ce cas l'écriture est refusé (problème de droit ??)
    Par contre quand il est stocké : tu as un nombre négatif.
    C'est cette procédure que je souhaite voir.

Discussions similaires

  1. Bug Type Double dans Access 2007
    Par kurkaine dans le forum C++Builder
    Réponses: 1
    Dernier message: 11/07/2007, 18h35
  2. Comportement des menus dans Access 2007
    Par soso78 dans le forum IHM
    Réponses: 6
    Dernier message: 17/06/2007, 23h43
  3. Formulaires réduits dans access 2007
    Par alyphe dans le forum Runtime
    Réponses: 2
    Dernier message: 13/06/2007, 09h35
  4. Obtenir la liste des tables dans Access 2007
    Par je_developpe dans le forum Access
    Réponses: 2
    Dernier message: 13/03/2007, 06h16
  5. stocker du texte d'une richtext box dans access 2007
    Par Ismaël(l) dans le forum IHM
    Réponses: 4
    Dernier message: 30/01/2007, 16h30

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