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

IHM Discussion :

Access 2003 - ComboBox lié à une autre table avec des clés primaire de 28 chiffres


Sujet :

IHM

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 111
    Points
    111
    Par défaut Access 2003 - ComboBox lié à une autre table avec des clés primaire de 28 chiffres
    Salut à tous,

    Je suis à la recherche d'un moyen d'afficher dans un formulaire access 2003 une liste de valeur plutot que l'ID de ceux-ci.

    Je vous entends déja dire : pfftt... on a déja répondu 300 fois à cette questions, pourquoi il ne regarde pas les tutoriels ou les faq. Et ben c'est déja fait !!

    Si j'ai des tables de ce genre
    Table1 (id,label)
    1,blabla1
    2,blabla2

    Table2 (id, label)
    1,pffft1
    2,pffft2

    et une table créant un relation m à n entre ses deux table
    Table3 (id, id1, id2)
    1,1,1
    2,1,2
    3,2,1
    4,2,2

    Alors crée une forme sur Table3 qui m'affiche
    1 blabla1 pffft1
    2 blabla1 pffft2
    3 blabla2 pffft1
    4 blabla2 pfttt2

    où "blabla*" et "pffft*" sont en réalité des combobox.
    Ca c'est vraiment de la tarte.

    En réalité le problème vient d'ailleurs. Les clés primaires que j'utilise pour mes tableaux sont des Number/Décimal/Précision 28. Et qu'il semble qu'avec ce type de pk cela ne fonctionne pas. Comme si access ne pouvait pas voir que
    2000005000000000000000000001=2000005000000000000000000001

    Au début j'ai cru que c'était lié au fait qu'access utilisait la notation scientifique. J'ai donc rajouté les propriétés "Format=Fixed" et "DecimalPlaces=0" de manière à ce qu'il traite/affiche les chiffres dans leur ensemble.
    a marche pas...

    La solution la plus simple qui vient à l'esprit c'est de changer les pk pour avoir des clées plus petites, hélas comme certaines de ces tables sont importées d'une db Oracle dont nous ne sommes pas propriétaires, je ne peux changer le format des clés primaires. Et je ne peux pas en créer d'autre étant donné que j'importe des données depuis access vers Oracle une fois certaines mise à jour effectuée.

    D'autres solutions seraient d'utiliser Oracle-Forms ou de créer de toute pièce un programme dans un vrai langage de programmation, hélas des contraintes budgétaires me l'interdisent.

    J'ai vraiment l'impression d'avoir fait le tour, et je ne trouve pas. Après avoir essayer de gougueler la raison pour laquelle cela ne marche pas, toujours rien.

    Bref :
    Ms Access 1 - 0 rafu0n3r

    Quelqu'un pour m'aider à égaliser ?

    merciiiiiiiiiiiiiiiiiiiiii
    rafu0n3r

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Bonjour et bienvenue sur le forum Access de DVP.

    Question peut-être idiote, mais avec ces nombre de 28 chiffres, fais-tu des opérations?

    Si non, transformes les en texte.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 111
    Points
    111
    Par défaut
    Merci Heureux-Oli,

    J'avais déja expérimenté cette solutin et cela marche très bien en effet. Bravo donc

    hélas ce n'est pas une option. Comme je le dis dans ma description, je ne suis pas propriétaire de toutes les tables. La plus grosse partie de ces tables sont géré par une application progicielle d'un tiers. Et je ne peux pas modifier ses champs là.

    Pour ce qui est des opérations effectuées sur ces champs, le traditionnel "+1" lorsque je crée un nouveau record, mais bon ca peut être facilement résolu.

    Evidemment il me suffirait de créer un procédure de chargement des tables depuis oracle vers access, et l'inverse lorsque des modifications ont été effectuées. Hélas il est fort probable que cette application soit utilisée de manière conccurente par différents utilisateurs. Cela complique énormément les choses pour l'export Access-Oracle en cas de modification d'une meme table, ou pire d'un meme record.

    Après vérification, il semble que la limitation soit sur le composant combobox d'access. Un collègue me signale qu'il est possible de charger d'autre combobox via un OCX. Une idée de l'endroit où je pourrais en trouver ? Si possible gratuit ou en tout cas avec une version d'évaluation le temps que je vérifie si cela solutionne le problème.

    merci
    Yves

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Une idée comme une autre ici

    Attention, il est fort, très fort.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    Citation Envoyé par Heureux-oli
    Une idée comme une autre ici

    Attention, il est fort, très fort.


    Ce que j'utilise dans mes boîtes de dialogue ce sont des common controls, en l'occurence c'est un combobox.
    Pour l'utiliser dans un formulaire il faut utiliser le contrôle activex ComboBox dont je n'ai pas le nom en tête, mais encore faut-il l'avoir et le déployer (et en plus être sûr qu'il apporte les fonctionnalités requises...)

    Mais sinon à quel endroit exactement le problème est-il rencontré???
    Est-ce que les données importées sont correctes?
    Est-ce dans du VBA, du SQL??

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 111
    Points
    111
    Par défaut
    arrgghhh j'ai perdu ce que je viens de répondre... bon je recommence.

    Salut Arkham,

    d'abord merci de prendre de ton temps pour essayer de trouver une réponse à mon problème.

    Pour répondre à tes questions :
    - Le problème est dans les formulaires que je crée. Les combobox ne réagissent pas du tout de la même manière lorsque les clés que j'utilise sont des nombres de 28 chiffres de long ou des nombres de un ou deux chiffres de long.
    - Les données sont correctes j'en suis sûr. Il suffit de faire un select en utilisant utilisant les clés qui ne donnent pas les résultats souhaités avec les combobox et cela fonctionne super bien
    - C'est en VBA. Enfin pour être précis j'utilise le wizard lorsque je rajoute une combo.

    Enfin un exemple vaut mieux qu'un long discours. Donc voir le fichier en attache
    (J'ai du tricher un peu parce que le serveur n'accepte pas les fichier mdb. Tu trouveras donc un fichier 'exemple.zip' qui contient 'exemple.mdb' qui est mon fichier d'exemple. Je ne voyais pas comment faire autrement)

    Tu y trouveras 2 fois 3 tables. Les tables ORIG_* sont les tables tels qu'elles sont dans la db oracle, ainsi que les table MODIF_* qui sont exactement les meme tables au niveau de la strucuture et du type des champs.
    C'est assez simple pour ne pas avoir à l'expliquer mais j'ai malgré tout mis un tout petit schéma expliquand les liens entre les table en attache (StructureDb.jgp)

    La différence est que dans les tables originales les clés utilisée sont des nombres de 28 chiffres de long, et que dans les tables modifiées les clés sont simplement 1,2,3,4,5,...

    Ma question est donc pour les combo dans les formulaires. Quand tu regardes MODIF_PRODUCT_FORM, c'est exactement ca que je veux. Deux combobox remplacant les foreign keys et reprennant des données qui sont plus parlante à l'utilisateur qu'un semble id.

    Mais quand je fais exactement la meme chose dans le form ORIG_PRODUCT_FORM, cela ne marche pas !!!!

    Je ne fais rien de spécial dans un cas comme dans l'autre pour créer les combo, je ne fais que suivre le wizard à la création. Deux fois de la meme manière, pour les 2 formulaires. Et ca marche pas !!!! (mais bon ca je l'ai déja dit).

    Une idée de génie ?

    @+
    rafu0n3r
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 8
    Dernier message: 10/02/2014, 14h57
  2. Réponses: 5
    Dernier message: 16/11/2010, 13h46
  3. Réponses: 6
    Dernier message: 19/03/2009, 10h22
  4. Réponses: 2
    Dernier message: 10/03/2009, 12h45
  5. Réponses: 17
    Dernier message: 21/04/2008, 01h21

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