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 :

Clef primaire en Int32 dans Access 2010 depuis dataset


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 57
    Par défaut Clef primaire en Int32 dans Access 2010 depuis dataset
    Bonjour à tous,

    J'ai un sérieux problème avec l'accès à une base Access 2010 (accdb) depuis VB2010.

    Contexte :
    - une base Access 2010 avec une trentaine de tables.
    - toutes les tables ont une clef primaire configurée en Entier Long (j'ai vérifiè).
    - L'application est développée en VB 2010.
    - J'accède à la bdd avec OLEDB

    Le problème :
    - lorsque je crée un dataset dans VB sur une table (n'importe laquelle) de la bdd, la clef primaire est automatiquement convertie en Entier (pas long !), ce qui me pose de sacrés problèmes sur les grosses tables.
    - J'ai checké le type de champ depuis VB avec "GetType", qui me renvoie toujours un Int32.

    Pas moyen de trouver d'où ça vient !
    Quelqu'un aurait une idée de la source du problème ?

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Un Long Integer dans Access n'a pas le même sens qu'un Long en .NET... Dans Access, un Long Integer est sur 32 bits, avec des valeurs de -2147483648 à 2147483647. Ca correspond donc bien à un Int32

    Si tu as besoin de valeurs plus grandes, utilise une vraie base de données... (non, Access n'est pas une vraie base de données)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 57
    Par défaut
    Merci pour ta réponse rapide.

    Je me doutais que ça venait d'access.

    Le problème, c'est que je n'ai pas vraiment le choix de la bdd (existante) et que je souhaite utiliser les composants de DevExpress (Grid et Vertical Grid), que j'ai testées.

    Quand je définis le dataset et que je définis une datatable comme datasource d'une grille, celle-ci m'oblige en permanence à convertir mes primary keys en Integer, mais au sens .net.

    La plage de valeur d'access (-2147483648 à 2147483647) me va très bien. par contre celle de .net (-32768 à 32767) ne me suffit pas et "tronque" les valeurs stockées dans la bdd (je ne peux plus faire de recherche, par exemple)!

    Comment faire ?
    La conversion d'une bdd Access en bdd SQL server Express par exemple est elle simple (je ne connais quasiment pas SQL Server...) et peut-on administrer la bdd aussi simplement qu'avec Access (hors application) ?

    J'aimerais vraiment conserver Access, mais je ne sais pas comment contourner ce problème d'entier...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 57
    Par défaut
    huuummmmm... Je crois que je me suis mélangé les pinceaux.
    En fait il n'y a pas de pb avec les composants DevExpress.
    J'ai corrigé le code et on dirait qu'il n'y a plus de pb.
    merci en tout cas pour ton aide : ça m'a mis sur la piste de la solution...

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Lamanne Voir le message
    par contre celle de .net (-32768 à 32767) ne me suffit pas et "tronque" les valeurs stockées dans la bdd
    ça c'est la plage pour le type short (Int16) ; pour Int32 c'est bien -2147483648 à 2147483647

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

Discussions similaires

  1. [AC-2010] Numérotation personnalisée des enregistrements dans Access 2010
    Par Tofalu dans le forum Access
    Réponses: 3
    Dernier message: 27/06/2021, 10h42
  2. [AC-2010] Comment créer un nouveau projet ADP dans Access 2010
    Par jloois dans le forum Projets ADP
    Réponses: 4
    Dernier message: 25/04/2010, 21h48
  3. [AC-2010] Menus dans Access 2010 ?
    Par AlainL dans le forum Modélisation
    Réponses: 13
    Dernier message: 04/12/2009, 12h27

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