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 :

Prob: violation de clé à l'importation excel [AC-2010]


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2011
    Messages : 20
    Points : 11
    Points
    11
    Par défaut Prob: violation de clé à l'importation excel
    Bonjour,

    je reçois des listes excel pour m'avertir des colis qui arrivent dans ma zone de stockage.
    J'aimerais uploader ces fichiers excel dans access pour les gérer plus simplement.

    Problème: quand j'essaye on m'indique une violation de clé et donc l'upload ne se fait pas.
    Nom : violations de clé.PNG
Affichages : 502
Taille : 32,8 Ko
    Nom : relations tables.PNG
Affichages : 622
Taille : 37,2 Ko



    Début de solution: en faisant des tests il me semble avoir compris que les informations que j'essaye d'uploader dans certains champs posent problèmes, car ces champs sont les champs clés dans les tables liées. Pour palier à ce probleme il faut que l'information existe initialement dans la table liée.
    exemple: si Cofely est dans mon fichier excel dans le champs Supplier Name, ça va bugger car il n'existait pas dans ma table "Suppliers"

    Comment puis-je faire en sorte qu'access créé un nouvel enregistrement dans la table liée quand il voit arriver un enregistrement qu'il ne connais pas dans la table fille ?

    Merci beaucoup!!!!
    #je galère sur access...
    Images attachées Images attachées  

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 643
    Points : 34 351
    Points
    34 351
    Par défaut
    Salut,

    ici c'est bien un champ qui devrait être unique, mais ne l'est finalement pas dans tes données.

    T'est-il possible de faire un contrôle dans Excel par exemple pour déterminer la valeur en doublon et ensuite de faire en sorte de corriger le problème en amont de l'import ?

    Sinon il te faudrait faire un import sans avoir de clé dans ta table, de faire un contrôle post import.

  3. #3
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 912
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 912
    Points : 4 811
    Points
    4 811
    Par défaut
    Bonsoir,

    il te faut travailler ligne par ligne dans ton fichier Excel :
    avant d'importer les données d'une ligne tu dois vérifier une à une
    si les valeurs des 5 clés étrangères existent déjà dans leur tables respectives
    sinon il faut les créer , avant d'importer la ligne.
    juste un peu d'huile de coude ...

    CDLT

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2011
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    merci pour vos réponses.

    @JF andré: je ne veux pas corriger les doublons en amont dans mon fichier excel parce que j'en ai besoin. J'ai 1 ligne excel par palette recue. Et je veux que toutes les palettes soient uploadées dans ma table Input Supplier Shipment (table fille). Mais plusieurs palettes viennent d'un fournisseur (table mère) par exemple.
    Qu'entends-tu par :"il te faudrait faire un import sans avoir de clé dans ta table, de faire un contrôle post import. " ?

    @micniv: effectivement c'est une solution que de remplir mes tables meres (fournisseurs, clients, packing list, etc...) en amont. Mais justement je cherche une solution pour que je n'ai pas à le faire et que cette creation soit automatisée pour gagner du temps.
    Je veux que dès qu'une ligne excel désignant que ma palette est fournie par COFELY est uploadée dans ma table Input Supplier Shipment, et que COFELY n'existe pas dans ma table SUPPLIER, que COFELY soit automatiquement ajouté à ma table SUPPLIER

  5. #5
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 912
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 912
    Points : 4 811
    Points
    4 811
    Par défaut
    je cherche une solution pour que je n'ai pas à le faire et que cette creation soit automatisée pour gagner du temps.
    Et c'est exactement ce que je recommandais de faire ...

    Donc prenons le cas de COFELY , avant d'uploader la ligne Excel,
    tu demandes si la valeur COFELY existe dans la table SUPPLIER par un Dcount()
    par exemple en adaptant un code comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if dcount ("*","SUPPLIER", "Supplier_name = 'COFELY'") = 0 then
    strsql= "INSERT INTO SUPPLIER (Supplier_name) values ('COFELY') "
    currentdb.execute strsql
    end if
    tu fais ça pour tes 5 clés externes, ensuite tu peux importer la ligne Excel.

    On n'aime pas les espaces dans les noms de champs tu devrais remplacer [supplier name] par Supplier_name ... etc C'est plus facile à utiliser.
    CDLT

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2011
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Bonjour!

    ouyi ça y est j'ai compris. merci pour l'info. Effectivement en procédant ainsi c'est bon.

    merci beaucoup!

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

Discussions similaires

  1. [AC-2010] Importation Excel -> Access, problème violation de clé
    Par oplaut dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 22/01/2013, 17h08
  2. [win32] delphi importation excel
    Par pier dans le forum Bases de données
    Réponses: 2
    Dernier message: 09/09/2005, 15h27
  3. Erreur d'import Excel -> Delphi
    Par Homer dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 05/07/2004, 10h07
  4. Import Excel / CSV
    Par aston_max dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 04/07/2004, 23h31
  5. import Excel --> Stringgrid de Delphi
    Par Homer dans le forum Langage
    Réponses: 2
    Dernier message: 16/06/2004, 12h53

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