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 :

Requête INSERT INTO avec SELECT et VALUES [AC-2002]


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 67
    Points : 62
    Points
    62
    Par défaut Requête INSERT INTO avec SELECT et VALUES
    Bonjour,

    J'ai une application qui tourne sous Access depuis plusieurs années. Aujourd'hui le dois apporter une modification et je suis bloqué sur un problème que je n'arrive pas à résoudre.
    J'ai deux tables avec des définitions similaires

    DétailCession
    IdxDétailCession :NuméroAuto, Entier long, Indexé sans doublon
    RéfCde : Numérique, Entier long,Indexé avec doublons
    CodeLivre : Numérique, Entier long, Indexé avec doublons
    EtatLivre : Texte
    CocheLivre : Oui/Non
    DétailReprendre : mêmes rubriques sauf IdxDétailReprendre

    Dans mon traitement je souhaite que les enregistrements correspondant à
    une commande de la table DétailCession soient chargées dans la table DétailReprendre, mais en ajoutant 2000 à la RéfCde
    Le N° de commande à charger est fourni par un contrôle de formulaire : RéfCde
    Ci-dessous l'extrait de mon code VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim RéfDépAnt As Long
        RéfDépAnt = Me!RéfCde + 2000
    DoCmd.RunSQL " INSERT INTO DétailReprendre ( RéfCde, CodeLivre, EtatLivre, CocheLivre )" & _
        " SELECT  ' & RéfDépAnt & ', DétailCession.CodeLivre, DétailCession.EtatLivre, DétailCession.CocheLivre" & _
        " FROM DétailCession" & _
        " WHERE ((DétailCession.RéfCde)= " & Me!RéfCde & ");"
    Mais à chaque fois j'ai le message " x enregistrements n'ont pas été ajoutés à la table à la suite de violation de clé".
    J'ai vérifié la valeur de RéDépAnt est correcte : si RéfCde =10, RéfDépAnt = 2010
    C'est sans doute que ma requête est erronée et que la valeur de RéfDépAnt n'est pas reconnue ce qui provoque la violation de clé.
    Pouvez vous me dire comment rédiger ma requête pour indiquer la RéfCde à charger, tout en reprenant les enregistrements de la table DétailCession.

  2. #2
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DoCmd.RunSQL " INSERT INTO DétailReprendre ( RéfCde, CodeLivre, EtatLivre, CocheLivre )" & _
        " SELECT  DétailCession.RéfCde + 2000 As Ref, DétailCession.CodeLivre, DétailCession.EtatLivre, DétailCession.CocheLivre" & _
        " FROM DétailCession;"
    pour tous les enregistrements sinon préciser un critere de selection

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 67
    Points : 62
    Points
    62
    Par défaut
    Merci helas pour ta réponse.
    Mais hélas... ça ne marche pas, j'ai toujours le même message d'erreur.
    Une autre suggestion ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 67
    Points : 62
    Points
    62
    Par défaut
    J'ai fini par trouver la raison du plantage. C'est tout bête, mais il fallait y penser.
    Ca ne vient pas de ma requête mais la table que j'essaie de mettre à jour est en relation sur RéfCde avec une autre table, comme j'incrémente ce RéfCde la relation avec l'autre table n'est plus possible.
    Si je supprime la relation entre les deux table, la requête s'exécute sans problème. Il faut donc que je revoie la logique de mon traitement car je ne souhaite pas supprimer cette relation.

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

Discussions similaires

  1. Requête INSERT INTO avec deux conditions
    Par Netzo dans le forum Langage SQL
    Réponses: 12
    Dernier message: 08/02/2012, 10h21
  2. [AC-2003] insert into avec select sur colonne suivante
    Par nawakbling dans le forum VBA Access
    Réponses: 1
    Dernier message: 12/10/2010, 20h44
  3. Problème de requète INSERT INTO avec access
    Par Hipopo dans le forum VB.NET
    Réponses: 7
    Dernier message: 29/03/2010, 13h52
  4. Requête INSERT INTO avec des champs et des variables
    Par fips1962 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 26/05/2009, 18h51
  5. [REQUETE] Question requete 'insert into' avec select
    Par Jeannot dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 09/08/2007, 18h52

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