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.NET Discussion :

Access : Valeur Numérique Hors Limites(Null)


Sujet :

VB.NET

  1. #1
    Membre éclairé
    Inscrit en
    Février 2007
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 271
    Par défaut Access : Valeur Numérique Hors Limites(Null)
    Bonjour

    Utilisant VB2005, lorsque j'essayes d'insérer(via un insert) un tuple dans la base , j'ai un problème avec le numéro de sécurité sociale (15 caractères)

    "Microsoft , Pilote ODBC , Microsoft Access - Valeur Numérique Hors Limites(Null)"

    Le type du champ dans ma Base est "entier long"

    A noter que lorsque je rentres un champ de 10 chiffres , ça passes.


    Cordialement,

  2. #2
    Membre émérite
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Par défaut
    A priori c'est une erreur de stocker un NIR sous forme numeric

    Il y a des cas ou le numéro n'est pas entièrement numérique...
    pense aux corses ...

  3. #3
    Membre éclairé
    Inscrit en
    Février 2007
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 271
    Par défaut
    Citation Envoyé par Kelpan Voir le message
    A priori c'est une erreur de stocker un NIR sous forme numeric

    Il y a des cas ou le numéro n'est pas entièrement numérique...
    pense aux corses ...

    Excuse moi , mais je ne t'ai pas compris

  4. #4
    Membre émérite
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Par défaut
    Je disais que l'erreur était de stocker le numéro de securité de sociale sous forme numérique en base de données.
    Il faut le stocker sous forme varchar car les corses ont des caractères alphabetiques dans leur NIR (Département 2A et 2B)

    Rappel de la composition d'un NIR :

    rang 1
    le sexe (1 pour les hommes et 2 pour les femmes).

    rangs 2 et 3
    les deux derniers chiffres de l'année de naissance ; à noter que ces chiffres sont insuffisants pour déterminer, à un siècle près, l'année de naissance exacte.

    rangs 4 et 5
    les deux chiffres du mois de naissance (de 01 à 12) ; en cas de mois de naissance inconnu, d'autres codes spécifiques sont attribués.

    rangs 6 à 10
    le lieu de naissance : il s'appuie sur le code officiel géographique de l'INSEE. Personnes nées en métropole : les deux chiffres du département suivis des trois chiffres du code commune. Pour la Corse la numérotation 2A, 2B a pris effet en 1976. Personnes nées dans les DOM : les trois chiffres du département suivi des 2 chiffres de la commune. Personnes nées à l'étranger : le code 99 suivi des trois chiffres désignant le pays. Au cas où le nombre de naissances dépasse 999 pour une commune et un mois donné, un "code commune extension" est utilisé pour garantir l'unicité du NIR.

    rangs 11 à 13
    un numéro d'ordre non significatif

    EDIT : (On peut indiquer la clé de contrôle du NIR)

    Rangs 14 à 15
    La clé de contrôle du NIR est un nombre à deux chiffres dont la valeur est le complément à 97 du reste de la division du nombre formé par le NIR par 97. Cette formule a été adaptée aux numéros de départements alphabétiques (2A et 2B) de la manière suivante :
    • Les caractères alphabétiques sont remplacés par des "0".
    • On soustrait du nombre à 13 chiffres ainsi obtenu la valeur 1000000 si le caractère alphabétique remplacé par un zéro était la lettre A, ou la valeur 2000000 si c'était la lettre B.

  5. #5
    Membre éclairé
    Inscrit en
    Février 2007
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 271
    Par défaut
    D'accord

    C'est très bien expliqué.

    Mais dans notre cas , on dira qu'il y a que des chiffres.

    Il est possible d'insérer 10 chiffres dans l'attribut de la table , mais pas 15.

    A partir de 11 , que ça me met le message d'erreur ci-dessus.

  6. #6
    Membre éclairé
    Inscrit en
    Février 2007
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 271
    Par défaut
    ET puis oui , je me suis trompé , c'est bien 13 au lieu de 15.

    Mais ca ne m'aide pas vraiment , si le numéro fesait 10 chiffres , je n'aurais pas eu de soucis , c'est à partir de ce fichu 11e numéro grrr

  7. #7
    Membre émérite
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Par défaut
    C'est à mon tour de ne pas comprendre

    Selon la base de données que tu utilises, la taille d'un type peut différer (tu peux la trouver dans la doc assez facilement)

    Exemple en Transact SQL (Sql Server)

    bigint
    -2^63 (-9,223,372,036,854,775,808) to 2^63-1 (9,223,372,036,854,775,807)
    8 Bytes
    int
    -2^31 (-2,147,483,648) to 2^31-1 (2,147,483,647)
    4 Bytes
    smallint
    -2^15 (-32,768) to 2^15-1 (32,767)
    2 Bytes
    tinyint
    0 to 255
    Ensuite tu as le type Decimal et Numeric qui peuvent stocker des nombres plus grands.

    http://msdn2.microsoft.com/en-us/library/ms187746.aspx

    Ensuite varchar, varbinary, image peuvent contenir des nombres plus grands. Par contre, il te faudra les outils nécessaires pour pouvoir traiter ce genre de données (A priori, tu n'en arriveras pas là)

    Bref, si tu veux toujours stocker ton NIR en numérique, je te conseille dans ce cas d'utiliser le type 'bigint' (ou équivalent selon la base de données).

    Edit:
    On peut indiquer la clé de controle du NIR, ce qui constitue un NIR à 15 caractères

  8. #8
    Membre éclairé
    Inscrit en
    Février 2007
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 271
    Par défaut
    Ok , Merci.

    Déja , j'utilises ACCESS et j'utilises le type "entier long" , donc il doit normalement gérer un entier de plus de 10 caractères.

    Donc je ne devrais pas avoir ce soucis.

    Une solution pourrais consister à passer mon champ en "varchar" , mais dans ce cas la , j'pourrais pas saisir des numéros SS de + de 10 chiffres

  9. #9
    Membre émérite
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Par défaut
    Citation Envoyé par Kenshin86 Voir le message
    Déja , j'utilises ACCESS et j'utilises le type "entier long" , donc il doit normalement gérer un entier de plus de 10 caractères.
    Qui correspond au type "int" en Transact SQL, il suffit de regarder la doc pour s'en rendre compte.
    Rappel le type "int" a pour value max 2147483647. (10 chiffres)
    A priori, il n'y a pas d'équivalent à bigint pour ACCESS

    Citation Envoyé par Kenshin86 Voir le message
    Une solution pourrais consister à passer mon champ en "varchar" , mais dans ce cas la , j'pourrais pas saisir des numéros SS de + de 10 chiffres
    Pourquoi ?
    Tu peux définir le nombre de caractères que tu veux pour ton type "varchar".

    Voici une doc, elle n'est pas complète, mais elle te permettra de mieux te familiariser avec ACCESS. Il y a une partie qui traite des types de données.

    http://mhubiche.developpez.com/Access/cours/bases/


    2:00 du mat -- Insomnie dominical

  10. #10
    Membre éclairé
    Inscrit en
    Février 2007
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 271
    Par défaut
    Voila , j'ai passé mon champ en "Texte" et ça passe.

    En fait , je croyais que si j'avais mis mon Champ en "Texte" , il me mettrait une erreur parce qu'il n'y pas au moins un chiffre.


    Merci

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

Discussions similaires

  1. [AC-2010] Erreur 3146 : Valeur numérique hors limite
    Par Invité dans le forum VBA Access
    Réponses: 2
    Dernier message: 19/11/2012, 13h02
  2. Réponses: 1
    Dernier message: 21/02/2011, 21h30
  3. Ajouter une valeur numérique dans un champ null
    Par Christophe Charron dans le forum Requêtes
    Réponses: 2
    Dernier message: 08/09/2009, 18h00
  4. "la précision numérique est hors limites"
    Par ptitenana_vtq dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 24/10/2008, 10h24
  5. Réponses: 10
    Dernier message: 30/11/2006, 23h06

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