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

Langage SQL Discussion :

Problème de choix de Foreign Keys et de mise en place des relations


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 65
    Points : 33
    Points
    33
    Par défaut Problème de choix de Foreign Keys et de mise en place des relations
    Bonjour,

    Dans le cadre d'un projet, j'ai dû réaliser une BDD.

    Ayant déjà posté quelques posts concernant ce projet, voici la description du projet que j'avais déjà donné.


    L'application que je dois réaliser est une sorte de répertoire regroupant tous les fournisseurs d'une entreprise ainsi que leurs produits, leurs coordonnées (un fournisseur pouvant avoir plusieurs coordonnées différentes, selon le contact), etc.


    En bref, les produits sont repartis dans plusieurs sous-familles. Un fournisseur peut faire partie de plusieurs sous-familles selon ses produits (Admettons qu'un fournisseur fournisse un produit 1 appartenant à la sous-famille A et un produit 2 appartenant à la sous-famille B, on considère que le fournisseur appartient à ces deux sous-familles si vous voyez ce que je veux dire).

    Ainsi, le menu principal de l'application devrait afficher une arborescence (à la manière des dossiers dans Windows, un TreeView c'est ça ?) permettant de déployer les sous-familles puis de cliquer sur le fournisseur souhaité. De plus, plusieurs boutons sont affichés dans ce menu, permettant d'accéder à des fenêtres de recherche par fournisseur/produit/sous-famille.

    Dans le cas de la recherche par fournisseur et sous-famille, une ListBox est triée pour affiché le/les fournisseurs par rapport à un choix effectué dans un ComboBox.

    Dans le cas de la recherche par produit, une fois le choix fait dans le ComboBox, une fenêtre contenant une ListBox s'affiche en indiquant tous les fournisseurs proposant le produit choisi.

    Une fois le fournisseur choisi (via la recherche ou l'arborescence), une fenêtre sera affichée et regroupera ses différents contacts (responsable, commercial, secrétaire, etc.) ainsi que leurs coordonnées (+ en cliquant sur l'adresse mail, on devrait directement pouvoir envoyer un mail). Je pense, ici, les afficher sous forme d'onglets, un onglet correspondant à un contact.

    Dans cette même fenêtre devrait figurer une liste des produits (sans doute dans un tableau). Ce tableau disposera d'une colonne « Libellé » mais également « Fiche technique » qui devrait permettre de télécharger un fichier PDF ou d'en uploader un si ce n'est pas déjà fait (est-ce que cela est possible ?) en sachant que chaque produit disposera d'une ou plusieurs (si la si le fournisseur fournit plusieurs marques pour un même produit) fiche(s) technique(s) pour un fournisseur donné (et donc, la/les fiche(s) technique(s) sera/seront différente(s) selon le fournisseur, même si le produit dispose du même libellé).

    Enfin, il sera possible d'ajouter/modifier/supprimer les produits, familles, sous-familles, fournisseurs mais seulement pour DEUX utilisateurs. Ainsi, je vais devoir créer un formulaire d'authentification pour que tout le monde ne puisse pas modifier les données.

    Le but de l'application est d'être le plus simple possible, le plus accessible. Donc je me limite à ce qui a été demandé.



    J'ai décidé d'utiliser VB.NET (via Visual Studio 2013) pour l'application et SQL Server (avec SQL Server Management Studio) pour la BDD.

    Voici le schéma de ma BDD:

    Nom : BDD.PNG
Affichages : 779
Taille : 24,4 Ko

    J'ai un petit problème. J'ai pas mal de difficultés en développement et de la même manière, ça fait longtemps que je n'ai pas été amené à réaliser une BDD donc les notions de relations, de FK, etc. ce n'est plus que c'était. D'autant plus que le projet est urgent (retard provoqué par d'autres projets qui se sont ajoutés).

    De ce fait, il y'a quelques petits détails que j'ai du mal à comprendre.

    J'ai utilisé, comme c'est indiqué sur le schéma, les IDs en tant que FK, comme j'ai pu le voir sur pas mal de tutos. Mais j'ai commencé à ajouter quelques données afin de faire des tests et je me rend compte que quand je dois, par exemple, ajouter un Contact, je dois rentrer l'ID correspondant au Fournisseur auquel le Contact appartient, ce qui n'est pas pratique.
    Je pense notamment au moment où la BDD sera complétée avec des dizaines/centaines de Fournisseur, je serais sans doute amené à importer les données via un fichier Excel, je devrais donc chercher systématiquement l'ID du Fournisseur ?

    De la même manière, j'ai utilisé une JUNCTION TABLE pour la relation Many-to-many. A chaque fois que je voudrais faire correspondre un Fournisseur à un Produit, vais-je être obligé de chercher l'ID du Produit et l'ID du Fournisseur afin de les indiquer dans la table ProduitFournisseur ?


    Merci d'avance pour le temps que vous m'accorderez.

    Cordialement.

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 192
    Points : 28 075
    Points
    28 075
    Par défaut
    Citation Envoyé par DieInPain62 Voir le message
    J'ai utilisé, comme c'est indiqué sur le schéma, les IDs en tant que FK, comme j'ai pu le voir sur pas mal de tutos. Mais j'ai commencé à ajouter quelques données afin de faire des tests et je me rend compte que quand je dois, par exemple, ajouter un Contact, je dois rentrer l'ID correspondant au Fournisseur auquel le Contact appartient, ce qui n'est pas pratique.
    C'est pourtant la façon propre de faire les choses

    Citation Envoyé par DieInPain62 Voir le message
    Je pense notamment au moment où la BDD sera complétée avec des dizaines/centaines de Fournisseur, je serais sans doute amené à importer les données via un fichier Excel, je devrais donc chercher systématiquement l'ID du Fournisseur ?
    Oui !
    Plus exactement, si tu fais un import massif, tu importeras d'abords le fournisseur, il te faudra donc récupérer son id. tu pourras ensuite importer tous ses contacts, tu n'auras as besoin de récupérer l'id à chaque contact puisque c'est le même. Si, par la suite, tu crée un contact, tu le fera dans ton logiciel depuis la fiche fournisseur correspondant, tu auras donc déjà l'id du fournisseur.

    Citation Envoyé par DieInPain62 Voir le message
    De la même manière, j'ai utilisé une JUNCTION TABLE pour la relation Many-to-many. A chaque fois que je voudrais faire correspondre un Fournisseur à un Produit, vais-je être obligé de chercher l'ID du Produit et l'ID du Fournisseur afin de les indiquer dans la table ProduitFournisseur ?
    De la même manière oui.
    Mais là encore, tu le fera dans ton logiciel, ou tu auras sans doute une liste de fournisseur dans laquelle tu choisiras le bon, tu auras donc son id. De même pour les produits. Au final c'est moins compliqué que ça n'y parait.

    Une petite remarque sur ta table jonction, la clé primaire idproduitfournisseur n'est pas forcément nécessaire. Tu pourrais mettre plutôt une clé primaire composée avec idproduit et idfournisseur. Cette solution a l'avantage en plus de gérer directement l'unicité de la relation, là ou avec ta solution, tu serais obliger de rajouter une contrainte d'unicité sur les 2 colonnes.
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 65
    Points : 33
    Points
    33
    Par défaut
    Bonjour,

    Tout d'abord, merci pour ton aide précieuse.

    C'est pourtant la façon propre de faire les choses
    C'est bien ce que je pensais, j'ai suivi plusieurs méthodes et ils le faisaient toujours de cette manière.

    Oui !
    Plus exactement, si tu fais un import massif, tu importeras d'abords le fournisseur, il te faudra donc récupérer son id. tu pourras ensuite importer tous ses contacts, tu n'auras as besoin de récupérer l'id à chaque contact puisque c'est le même. Si, par la suite, tu crée un contact, tu le fera dans ton logiciel depuis la fiche fournisseur correspondant, tu auras donc déjà l'id du fournisseur.
    De la même manière oui.
    Mais là encore, tu le fera dans ton logiciel, ou tu auras sans doute une liste de fournisseur dans laquelle tu choisiras le bon, tu auras donc son id. De même pour les produits. Au final c'est moins compliqué que ça n'y parait.
    D'accord, donc ça se passe bien comme je l'ai dit, je dois récupérer l'ID à chaque fois. C'est peu pratique mais au moins, je n'ai pas fait d'erreur, ça me rassure merci.

    Et oui, j'avais prévu de faire des formulaires d'ajout donc cette histoire d'ID sera de l'histoire ancienne.

    Une petite remarque sur ta table jonction, la clé primaire idproduitfournisseur n'est pas forcément nécessaire. Tu pourrais mettre plutôt une clé primaire composée avec idproduit et idfournisseur. Cette solution a l'avantage en plus de gérer directement l'unicité de la relation, là ou avec ta solution, tu serais obliger de rajouter une contrainte d'unicité sur les 2 colonnes.
    D'accord ! J'ai corrigé ça.
    D'ailleurs, d'après la description du projet, les relations sont-elles correctes ?


    Merci pour ton aide,

    Cordialement.

  4. #4
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 192
    Points : 28 075
    Points
    28 075
    Par défaut
    Citation Envoyé par DieInPain62 Voir le message
    D'accord, donc ça se passe bien comme je l'ai dit, je dois récupérer l'ID à chaque fois. C'est peu pratique mais au moins, je n'ai pas fait d'erreur, ça me rassure merci.
    Je ne sais pas comment tu vas gérer tes insertions, mais si tu le fais en écrivant directement les requêtes SQL INSERT, dans le cas de l'ajout d'un fournisseur, par exemple, au lieu d'écrire seulement une simple requete INSERT (qui ne renverra donc pas de résultats à l'execution), tu peux écrire la requete sous cette forme : INSERT INTO TaTable (....) VALUES (....); SELECT scopeIndentity();Le select à la fin aura pour effet de te renvoyer la valeur de la dernière clé primaire crée dans la base, et comme tu viens juste d'en créer une avec le INSERT, ça sera celle-là.

    Ensuite, cette clé, qui correspond à l'id de ton fournisseur, soit tu la stocke pour pouvoir créer les contacts de ce fournisseur plus tard, soit tu l'utilise pour les créer les contacts immédiatement avant de passer à l'autre fourniseur, ça c'est à toi de voir.

    Citation Envoyé par DieInPain62 Voir le message
    D'ailleurs, d'après la description du projet, les relations sont-elles correctes ?
    A part ma remarque sur la table association, rien de particulier ne m'a sauté aux yeux
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 65
    Points : 33
    Points
    33
    Par défaut
    D'accord, je devrais pouvoir m'en sortir avec tout ça.

    Merci beaucoup pour ton aide et tes conseils, ils me seront bien utiles !

    Cordialement.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 65
    Points : 33
    Points
    33
    Par défaut
    Rebonjour,

    Je reviens vers toi car je suis en ce moment même en train de créer une fenêtre "master/details" afin que dans la fenêtre Fournisseur, l'utilisateur choisisse un fournisseur, un DataGridView indique les contacts assignés au fournisseur en question et un autre indique les produits proposés par le fournisseur.

    J'ai alors commencé à ajouter des enregistrements dans la base afin d'effectuer les tests.
    Mais lorsque j'essaye d'assigner un produit à un fournisseur en indiquant les deux IDs dans la table "ProduitFournisseur", je ne peux qu'indiquer l'ID du produit et lorsque je souhaite modifier l'ID du fournisseur, celui reste NULL et j'ai un message d'erreur:


    "Aucune ligne n'a été mise à jour

    Les données de la ligne 1 n'ont pas été validées.
    Source d'erreur: .Net SqlClient Data Provider.
    Message d'erreur: L'instruction INSERT est en conflit avec la contrainte FOREIGN KEY "FK_ProduitFournisseur_Fournisseur". Le conflit s'est produit dans la base de données "Repertoire", table "dbo.Fournisseur", column 'idFournisseur'.
    L'instruction a été arrêtée.

    Corrigez les erreurs et réessayez ou appuyez sur ESC pour annuler les modifications"

    Comment pourrez-je régler ce problème ? N'est-ce pas dû au fait d'avoir deux clé primaires que j'essaye de modifier ?

    Merci d'avance !

    Cordialement.

  7. #7
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 192
    Points : 28 075
    Points
    28 075
    Par défaut
    Si tu as bien mis les 2 colonnes dans une clé primaire composée comme je l'ai indiqué, au moment de l'insertion, tu dois fournir à la fois l'id du produit et l'id du fournisseur. Ces 2 id devant obligatoirement déjà exister dans leur tables respectives.

    Visiblement, vu le message d'erreur, soit tu ne fournis pas l'id fournisseur au moment de l'insert, soit tu en fourni un qui n'existe pas dans la table fournisseur
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 65
    Points : 33
    Points
    33
    Par défaut
    C'est ce que j'essaye de faire, mais il ne me laisse pas choisir de valeur pour idFournisseur.
    Mais je viens de voir que dans ses propriétés, j'ai mis activé le (Est Identité) dans "Spécifications du compteur" comme je l'ai fait avec tous les autres id de ma BDD. Est-ce le problème ? Je viens d'y penser, étant mis en "identité" il cherche peut-être à s'auto-incrémenter ?

    Je viens d'essayer, et apparemment je peux maintenant attribuer une valeur pour les deux id, comme prévu. Mais cela ne va-t-il pas poser problème ?

    Encore merci.

  9. #9
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 192
    Points : 28 075
    Points
    28 075
    Par défaut
    Oui, le problème vient de là. identité oui, mais pas avec un compteur.

    Tu peux mettre un compteur sur les clé primaires de tables mères, ou indépendantes, mais jamais de compteur sur une clé étrangère (sauf cas très très particulier, mais ça reste à mon avis une mauvaise conception) dans une table fille, cette clé étrangère, fut-elle ou participe à la clé primaire.
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 65
    Points : 33
    Points
    33
    Par défaut
    Merci beaucoup pour la leçon !
    Je pense que maintenant j'en ai finit avec cette base de données, tout fonctionne correctement (enfin !).

    Encore merci pour ton aide, tu m'as vraiment bien dépanné !

    Cordialement.

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 65
    Points : 33
    Points
    33
    Par défaut
    J'ai finalement un dernier problème.

    Lorsque que j'essaye d'importer un fichier Excel pour remplir une de mes tables via l'assistant de SQL Server Management Studio, j'ai ce message d'erreur:

    Nom : Capture.PNG
Affichages : 698
Taille : 38,8 Ko

    Nom : Capture2.PNG
Affichages : 674
Taille : 18,8 Ko

    En sachant que la table que je veux remplir est la table famille (qui a donc 2 colonnes, ID et Libellé) et le fichier Excel contient une seule colonne, le nom des familles.

    Merci d'avance.

  12. #12
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 192
    Points : 28 075
    Points
    28 075
    Par défaut
    Et j'imagine que l'id est de type auto-incrémenté

    Je galère toujours avec ces cas. Soit tu as accès à la requete INSERT qui va tourner en arrière plan, dans ce cas, il faut essayer de virer la colonne ID, soit tu essaye en rajoutant une colonne ID dans ton fichier Excel en le mettant à 0 pour tous les champs. Suivant les SGBD et les configurations, l'un marche et pas l'autre et réciproquement.
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 65
    Points : 33
    Points
    33
    Par défaut
    Bonjour,

    Tout d'abord, j'ai essayé d'insérer une colonne d'ID (= 0 pour toutes les familles) dans le fichier Excel mais j'obtient la même erreur.

    J'ai alors essayé de supprimer l'ID dans la table Famille mais maintenant, j'obtient ceci:

    Nom : Capture.PNG
Affichages : 673
Taille : 38,6 Ko

    Une idée de la raison du problème ?

    Merci

  14. #14
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 192
    Points : 28 075
    Points
    28 075
    Par défaut
    La 2nd erreur te donne une piste, elle te parle de colonne Amiante, je pense que ça correspond à ce que tu essaye d'écrire, à moins qu'il prenne une de tes valeurs pour un nom de colonne. Ca te parle aussi de contraintes d'intégrités non respectées.
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 65
    Points : 33
    Points
    33
    Par défaut
    Bonjour,

    En effet. Mais je ne comprend pas, "Amiante" est la première valeur du fichier Excel que j'essaye d'importer, donc une des familles. Je ne comprend quel est le problème

  16. #16
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 192
    Points : 28 075
    Points
    28 075
    Par défaut
    Le problème est que tu dois avoir quelque part dans ton job d'importation une option qui dit que le première ligne comporte les noms de colonnes, ce qui, visiblement dans ton fichier n'est pas le cas.

    Si tu reparamètre ton job, soit tu édite ton fichier pour rajouter la ligne manque. Perso, je reparamèterais le job pour éviter de toucher le plus possible au fichier contenant les données, mais c'est toi qui vois (comme évidemment tu en as fait une sauvegarde avant d'y toucher, il n'y a pas de soucis )
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 65
    Points : 33
    Points
    33
    Par défaut
    Bonjour,

    Finalement, j'ai réglé mon problème. Une des lignes du fichier Excel du nom des familles était vide, je crois que c'était le problème.

    Maintenant, j'essaye d'importer les fournisseurs, pour éviter d'avoir des soucis j'ai supprimer la colonne ID dans la table Fournisseur. Donc j'ai un fichier Excel avec une colonne (les noms) à importer dans une table n'ayant, lui aussi, qu'une colonne.

    Mais j'ai encore un message d'erreur:
    Nom : Capture.PNG
Affichages : 580
Taille : 38,7 Ko

    J'ai vérifier que "La première ligne contient des noms de colonnes" est bien décoché, qu'aucune ligne du fichier Excel n'est vide, qu'il n'y a pas de doublons (j'avais eut un message d'erreur que j'ai corrigé en supprimant quelques doublons), etc.
    Mais je n'arrive pas à cerner le problème

    Merci d'avance.

  18. #18
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 192
    Points : 28 075
    Points
    28 075
    Par défaut
    Ben le message est clair dans la seconde erreur "La valeur des données a enfreint les contraintes d'intégrité de la colonne". Tu as donc une valeur qui ne respecte pas ce qui est attendu dans la base.

    Il faut que tu vérifie tes données, fait attention notamment aux caractères particuliers, accent, ponctuation, etc. Vérfiie comment tu as programmer aussi ta colonne, puisque tu n'as plus d'id, tu l'as déclarée en clé primaire ?
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  19. #19
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 65
    Points : 33
    Points
    33
    Par défaut
    Mais justement, je ne comprend pas. Ma colonne est en varchar(100) et il n'y aucun caractères spéciaux, juste quelques accents qui n'ont pas posé problème lors de l'import des Familles.

    J'ai essayé de mettre la colonne en colonne primaire (ce que je n'avais pas fait) mais toujours rien, même message...

  20. #20
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 65
    Points : 33
    Points
    33
    Par défaut
    Bonjour,

    Est-ce que quelqu'un connait la réponse à mon problème ?
    Mes recherches ne donnent rien pour le moment et ça devient urgent...

    Merci de votre patience.

    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [phpMyAdmin] foreign key constraint fails malgré la présence des données necessaires
    Par Lacout dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 30/10/2013, 15h51
  2. Réponses: 0
    Dernier message: 11/04/2012, 16h55
  3. Problème pour setter une Foreign Key avec TopLink(ValueHolderInterface)
    Par Kcintim dans le forum Persistance des données
    Réponses: 1
    Dernier message: 19/06/2011, 11h40
  4. problème avec Foreign Key [Interbase 7.5] [Delphi 2005]
    Par xenos dans le forum Bases de données
    Réponses: 3
    Dernier message: 09/09/2005, 11h21
  5. [REFERENCES/FOREIGN KEY]problème d'unicité de clé
    Par Guigui_ dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 18/01/2005, 16h47

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