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

Requêtes et SQL. Discussion :

Requete d'ajout simple fait des enregistrements multiples [AC-2016]


Sujet :

Requêtes et SQL.

  1. #1
    Futur Membre du Club Avatar de eskel594
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2017
    Messages : 8
    Points : 8
    Points
    8
    Par défaut Requete d'ajout simple fait des enregistrements multiples
    Bonjour,

    Je développe actuellement une base de données en stage, pour des gestions de suivi de contrats, et un souci me gêne dans mes dernières démarches.

    Problème initial : Ma requête d'ajout enregistre plusieurs fois le même enregistrement dans la table, parfois 1, parfois 2, parfois 4 ou plus.

    Solution temporaire : Ma table possédant une clé primaire, les enregistrements supplémentaires ne sont pas acceptés mais néanmoins présents

    Problème actuel : Je code une table de logs, qui doit donc accepter les doublons. Le problème revient donc car j'ai plusieurs entrées identiques pour une même modification.

    Screen de la requête :
    Nom : screen.PNG
Affichages : 2240
Taille : 31,0 Ko

    J'imagine que c'est une erreur basique mais je n'ai pas réussi à trouver de problème semblable et donc de solution.

    En gros je lance cette requête à chaque fois que l'utilisateur modifie ou supprime un enregistrement, le recherche le N° de commande sélectionné et je copie l'enregistrement depuis sa table vers les logs. (Les logs qui sont donc une base de même structure, mais avec doublons).

    Merci d'avance

    Cordialement

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    Par défaut
    Bonjour.

    Tu n'as pas de jointure définie entre tes deux tables donc ce que tu fais c'est un produit croisé soit le nombre d'enr. de table 1 x nombre d'enr. de table 2.

    L'erreur viens probablement de là et désolé je ne sais pas dans le détail ce que tu devrais modifier pour le résoudre.
    Il faut que tu trouves une relation entre tes tables (genre le numéro de la commande n'est pas dans la table des archives) qui fait que les enregistrements n'apparaissent qu'une seule fois.

    A+

  3. #3
    Futur Membre du Club Avatar de eskel594
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2017
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    Je vois à peu près ce que tu veux dire, mais dans ce cas pourquoi le même problème se produit-il dans le cas de la création de la commande ?
    Car dans ce cas là je récupère simplement les champs entrés par l’utilisateur vers ma table "Main - Commandes" via la requête, et il tente quand même de l'enregistrer plusieurs fois. Pourtant dans ce cas, pas de liaisons entre tables il n'y en a qu'une.

    Merci pour cette réponse je continue de creuser le sujet.

    Cordialement

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    Par défaut
    Classiquement c'est que tu as sans forcément le vouloir une liaison 1 à N dans tes données.

    Ex : Produit et Client, plusieurs clients peuvent acheter le même produit. Si tu te bases sur les ventes pour ajouter un produit, tu vas avoir plusieurs fois le produit.

    Difficile d'être plus spécifique sans connaître ton appli.

    A+

  5. #5
    Futur Membre du Club Avatar de eskel594
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2017
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Je cerne bien le problème maintenant mais ne voit pas encore comment le résoudre. Je vais essayer de développer un exemple simple vu que le problème apparaît sur toutes mes requêtes d'ajout.

    Mes commandes ont un champ "Partenaire", lors de la création d'une commande on en sélectionne un dans la base, on peut en ajouter un s'il n'est pas présent dans la liste.

    Nom : scr1.PNG
Affichages : 2028
Taille : 261,5 Ko

    Lorsque j'essaye d'ajouter un nouveau choix à cette liste, ma requête d'ajout fonctionne mais j'ai un warning qui me dit que X enregistrements sont ratés

    Nom : scr2.PNG
Affichages : 2016
Taille : 249,0 Ko

    En fait il s'agit du nombre d'entrées dans ma table partenaires, càd qu'il ajoute l'enregistrement auatant de fois qu'il y a d'entrées présentes dans la table et je ne vois pas pourquoi. En pratique pas de soucis vu que les entrées sont sans doublons mais un warning gênant niveau utilisateur.

    Voici la tête de la requête que j'ai crée, basique, qui reprend le champ utilisateur et le stocke dans la base.

    Nom : scr3.PNG
Affichages : 2289
Taille : 31,2 Ko

    Voilà, ce qui est mystique pour moi c'est que la requête est très basique je ne vois pas pourquoi elle ferait autant d'enregistrements que d'entrées dans ma table. S'il vous est possible par exemple de me transcrire cette requête Access en SQL ou VB de manière propre (vu qu'apparemment les outils Access ne sont pas très utilisés ici) pour essayer de refaire mes requêtes ? Ou simplement une explications sur cette liaison qui ne devrait pas être effective.

    Merci pour votre temps et bonne journée.

    Thibault

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    Par défaut
    Bonjour.

    Le problème c'est la présence de la table partenaire.
    Là tu essaye d'ajouter ton nouveau partenaire autant de fois qu'il y a de partenaires déjà dans ta table.

    Ici un exemple de requête d'ajout qui ne pose pas ce problème.

    Code sqll : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO Table1 ( Valeur )
    SELECT "Test" AS Valeur;

    Créée sans sélectionner aucune table, seulement en spécifiant la table destinatrice de l'ajout.

    et ici une comme la tienne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO Table1 ( Valeur )
    SELECT "Test" AS Valeur
    FROM Table1;
    C'est "From" qui est de trop :-).

    A+

  7. #7
    Futur Membre du Club Avatar de eskel594
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2017
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    Effectivement c'était bien le problème.
    En mode d'édition Access cela correspond à enlever l'affichage de la table dans la requête. Je pensais qu'il s'agissait juste d'un affichage mais cela impacte la requête.

    Résolution : Balayer toutes mes requêtes, supprimer à chaque fois les tables affichées, si cela ne supprime rien dans les paramètres de requêtes, ce n'était pas nécessaire donc réglé.

    Merci pour vos éclaircissements et à bientôt

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

Discussions similaires

  1. [AC-2007] Requête ajout qui fait des siennes !
    Par laurentz dans le forum IHM
    Réponses: 25
    Dernier message: 17/01/2013, 16h01
  2. Google ajoute le support des APK multiples sur l'Android Market
    Par Hinault Romaric dans le forum Android
    Réponses: 2
    Dernier message: 29/07/2011, 12h58
  3. ajouter à la suite des enregistrements
    Par adriennoob dans le forum IHM
    Réponses: 4
    Dernier message: 18/08/2009, 19h08
  4. Ajouter et supprimer des enregistrement dans JTable
    Par aidedoyen dans le forum Composants
    Réponses: 1
    Dernier message: 02/04/2008, 12h17
  5. Réponses: 3
    Dernier message: 11/03/2008, 07h31

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