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 :

[2000] Table liée (externe) : limitation des champs à 255


Sujet :

Access

  1. #1
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut [2000] Table liée (externe) : limitation des champs à 255
    Bonjour à tous.

    Nous avons un problème avec une limite d'Access : celle des 255 champs au maximum pour une table (cf ici).

    Nous avons une GROOOOOOSSE table d'un DatawareHouse sous Oracle qui a plus de 255 champs. Nous voudrions récupérer le 1er et le 256e dans une requête avec Access.

    Or quand nous lions la table (Lier les Tables), il n'importe que les 255 premiers champs et donc ne nous affiche pas le 256e pour la requête avec l'assistant. Bon jusque là c'est normal, c'est sa limitation.

    Maintenant, comment contourner ca ? Je précise qu'il n'est pas possible de toucher à la base Oracle, même pour créer une vue. Vu le volume il n'est pas envisageable d'aller chercher les données avec un ETL et de les ramener sur une base sur laquelle nous avons la main.

    1) J'ai essayé de modifier la définition de la table liée à la main (pourquoi pas ?) mais c'est impossible. Alors la question : quand on rajoute/modifie un champ sur la table externe, comment on répercute la modification dans la table liée ? On supprime l'ancienne et on la ré-importe ? Il y a un assistant de "synchronisation" de la structure ?

    2) J'ai essayé d'écrire ma requête en SQL directement, en me disant qu'il l'enverrait telle quelle au serveur et qu'il m'afficherait le résultat. Penses-tu ! Il m'a refusé ma requête et a considéré que ces champs 256+ étaient des "paramètres".

    Alors si vous avez une solution pour contourner ça...


    PS :
    En écrivant ce post, une idée me germe dans la tête...
    Bon les tables liées le sont VIA un lien ODBC.
    SI je change le contenu de ce lien (dans l'Administration ODBC) et que je le fais pointer sur un serveur de test dans lequel j'aurai créé la même table que dans mon DWH mais avec seulement les champs qui sont intéressants.
    Je n'ai qu'à lier cette table du serveur de test dans ma base Access. Puis re-changer l'IP de la source ODBC pour le serveur de production et pouf pouf, je peux récupérer les colonnes invisibles du serveur de production non ?
    Je teste et je vous dit.
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    1) Les tables Access ne peuvent pas avoir plus de 255 champs. C'est ainsi.

    2) Pour 'rafraichir' la structure de tes tables liées il faut aller dans le gestionnaire de tables liées et demander de les lier de nouveau sans cocher l'option 'toujours demander le chemin' en bas à gauche de la fenètre.

    Tu peux aussi utiliser le code suivant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    private sub RafraichirLink()
      dim db as database:set db=currentdb
      dim t as tabledef
      for each t in db.tabledefs
        if t.connect<>"" then
          t.refreshLink
        end if
      next t
      db.close:set db=nothing
    end sub
    Ca va te refaire tous les liens existants et prendre en compte les changement de structure.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    nuke_y a ecrit:
    1/
    quand on rajoute/modifie un champ sur la table externe, comment on répercute la modification dans la table liée ?
    sous access et dans les limites, je dis bien dans les limites des 255 champs (CAR C'EST VERITABLEMENT LA LIMITE), aucune intervention n'est neccessaire; les champs ajoutés apparaissent automatiquement.
    2/
    J'ai essayé de modifier la définition de la table liée à la main (pourquoi pas ?) mais c'est impossible.
    No comment, donc à ce niveau; tu t'es bien rendu compte que c'est impossible.
    3/
    Alors si vous avez une solution pour contourner ça...
    j'ai la ferme conviction que si tu cherches bien, il y a la possibilité de scinder la table en 2(sous access s'entend):
    oui; 2 tables qui seraient alors liées par une relation de 1 à 1.
    @+

  4. #4
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    MOUAHAHAHAHAHHAAH !!! Ma solution de feinter les liens ODBC marche avec Oracle !! Mouahahahahahahahahahhahah

    Bon en fait c'est pas dans les liens ODBC que j'ai fait la feinte mais dans le tnsnames.ora. Il faut que je vois si j'y arrive pour SQLServer maintenant.


    marot_r> Ouaih mais bon cette fonction de rafraichissement automatique ne me permet pas de règler mon problème de structure. J'ai HORREUR des trucs automatiques.... Merci quand même d'avoir confirmé.
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  5. #5
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Ah ouaih pas con la solution de la table scindée en 2 mais maintenant la question : COMMENT lui dire sous Access que la 1ere table possède les 200 1ers champs et la 2e table les 150 suivants ? Puisque je ne peux pas définir mon mapping de champs moi-même...

    Sinon j'ai fait le test sous SQLServer et... ça marche !!! Mouahahahahahahaha Mais c'est énoOOOOOOorme !! J'ai juste crée une DB en test qui était la copie conforme de la structure de la DB de prod (nom de connexion et d'utilisateur aussi évidemment). J'ai viré dans la table de la DB de test les champs dont je ne voulais pas (donc je n'ai gardé que le 1er champ identifiant et les champs après le 255e) et j'ai sauvé. Puis dans le lien ODBC utilisé par Access pour lier les tables j'ai modifié l'IP de production par celle du serveur de Test. J'ai re-lié la table (on aurait pu rafraîchir la structure je pense) et j'ai sauvé. Puis j'ai remodifié l'IP du lien ODBC pour re-taper sur le serveur de prod et j'ai testé ET CA MARCHE !!

    Mouahhaahhahaha
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

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

Discussions similaires

  1. Access limitation des champs sur table liée
    Par link3d dans le forum Access
    Réponses: 1
    Dernier message: 09/02/2012, 16h03
  2. [AC-2007] Tables liées et base des registres
    Par fbu78 dans le forum VBA Access
    Réponses: 2
    Dernier message: 24/06/2009, 22h00
  3. Table systèmes et noms des champs
    Par frantzgac dans le forum Firebird
    Réponses: 16
    Dernier message: 17/06/2008, 19h08
  4. Réponses: 3
    Dernier message: 09/06/2008, 18h59
  5. [Table / VBA] Addition automatique des champs
    Par NiKoTiNe dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 04/05/2007, 09h59

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