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

VBA Access Discussion :

Erreur 3073 sur une requete UPDATE


Sujet :

VBA Access

  1. #1
    Membre régulier

    Inscrit en
    Juin 2006
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 320
    Points : 97
    Points
    97
    Par défaut Erreur 3073 sur une requete UPDATE
    Bonjour à tous,

    Je cherche à compiler deux tables liées par une relation de 1 à n en une seule avec
    table1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lb_patronyme, lb_struct, date_j, date_m, date_a, lb_groupe, lb_nom, cd_taxon.
    table2 (qui centralise les paramètres des objets de la table 1):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cd_taxon, intitule_parametre, txt_val_param
    Ce mode de centralisation permet de laisser libre l'utilisateur de choisir ses paramètres.
    Or, il n'est pas évident d'en faire une synthèse en passant les "intitule_parametre" en colonnes.

    Pour ça:
    1/ je créé une requête "Requete_source" centralisant les infos que je veux.
    2/ je créé une table "Table_finale" avec un index + les x champs de Requete_source (ceux issus de la table 1) + autant de champs que de paramètres.
    2/ je nourris la table en deux étapes:
    a/ j'insère les données de la requete_source (champs issus de la table "1"):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO Table_finale ( [lb_patronyme], [lb_struct], [date_j], [date_m], [date_a], [lb_groupe], [lb_nom], [cd_taxon] )   SELECT  [lb_patronyme], [lb_struct], [date_j], [date_m], [date_a], [lb_groupe], [lb_nom], [cd_taxon] FROM R_Source GROUP BY  [lb_patronyme], [lb_struct], [date_j], [date_m], [date_a], [lb_groupe], [lb_nom], [cd_taxon]
    b/ je fais une boucle sur les différentes valeurs pour mettre à jour la colonne qui correspond au paramètre (dans l'exemple ci-dessous, il s'agit du paramètre "cd_methode_obs"):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE Table_finale INNER JOIN R_Source ON Table_finale.cd_taxon = R_Recherche.cd_taxon  SET Table_finale.[cd_methode_obs] = R_Recherche.txt_val_param WHERE R_Recherche.lb_param = "cd_methode_obs"
    J'ai le message suivant:
    "erreur 3073: l'opération doit utiliser une requête qui peut être mise à jour". Or la table à mettre à jour n'est pas une requête et elle possède un index.

    Une piste?

  2. #2
    Membre régulier

    Inscrit en
    Juin 2006
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 320
    Points : 97
    Points
    97
    Par défaut
    Je n'ai pas de réponse et apparemment mon sujet ne déchaine pas les foules...
    Me suis-je mal exprimée?

  3. #3
    Membre habitué
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 97
    Points : 131
    Points
    131
    Par défaut
    Je suis actuellement dans la même situation.....

  4. #4
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    Bonjour,

    l'erreur vient certainement de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Table_finale INNER JOIN R_Source ON Table_finale.cd_taxon = R_Recherche.cd_taxon
    car c'est une requête avec ta table comporte une liaison externe donc access ne peut pas mettre à jour car il ne sait pas ce qu'il doit mettre à jour.

    Est-ce la requête fonctionne dans le QBE? ce que je ne pense pas.

    Il te faut donc partir du QBE et ensuite coller le code SQL dans ton code et l'adapter, c'est le plus facile.

    j'espère que çà va t'aider

  5. #5
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 128
    Points : 12 185
    Points
    12 185
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    En général, les opérations UPDATE avec des jointures doivent se voir attribuer des alias ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SQL = "UPDATE " & strTableToUpdate & " AS T1 "
    SQL = SQL & "INNER JOIN " & strTableDataSource & " AS T2 "
    SQL = SQL & "ON T1.[" & strPKFieldName & "] = T2.[" & strFKFieldName & "] "
    SQL = SQL & "SET T1.[" & strTargetField & "] = [T2].[" & strSourceField & "];"
    Et donc tous les champs WHERE portent cet alias autant que les champs SET

    Argy

Discussions similaires

  1. erreur sur une requete UPDATE
    Par haymen dans le forum C#
    Réponses: 6
    Dernier message: 14/08/2008, 19h03
  2. erreur 2465 sur une requete DELETE
    Par aba_tarn dans le forum VBA Access
    Réponses: 7
    Dernier message: 19/02/2008, 08h35
  3. Erreur de syntaxe sur une Requete Update
    Par samtheh dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 01/06/2007, 14h07
  4. Erreur etrange sur une requete
    Par mael94420 dans le forum ASP
    Réponses: 3
    Dernier message: 12/03/2006, 23h25
  5. INNER JOIN sur une requete UPDATE
    Par Immobilis dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/03/2006, 15h05

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