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 :

Impossible de mettre à jour Recordset


Sujet :

Requêtes et SQL.

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Impossible de mettre à jour Recordset
    Bonjour,

    J'ai créé 2 tables :
    Une table DS avec les champs "eleve", "DS1", "DS2" et "appréciation trim 1" (la clé est sur le champ "eleve").
    Une table Oral avec les champs "numero", "eleve" et "oral" (la clé est sur le champ "numero"). Ainsi un eleve peut avoir plusieurs notes d'oral alors qu'un autre peut ne pas en avoir.

    J'ai créé une requête trimestre1 avec les champs "eleve", "DS1", "DS2", "oral", "moyenne" "appréciation trim 1".
    Le champ "moyenne" est l'expression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VraiFaux(EstNull([oral]);([DS1]+[DS2])/2;([DS1]+[DS2]+[oral])/3)
    Ensuite, je me suis servi de la ligne opération en indiquant regroupement à tous les champs, sauf pour le champ "oral" (où j'ai choisi moyenne).
    Jusque là tout va bien. Ma requête a fonctionné. J'ai les bons résultats.
    Malheureusement, lorsque je l'affiche, je ne peux pas modifier les cellules du champ "appréciation trim 1".

    Le message d'erreur est le suivant :
    Impossible de mettre à jour Recordset.

    Pouvez-vous m'aider.
    Merci beaucoup.

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Bonjour,

    Ça n'est pas possible avec une requête de regroupement.
    Quand puis-je mettre à jour des données à partir d'une requête (MDB)

    L'idéal serait peut-être d'avoir une table Eleves et une seule table pour toutes les notes, comportant un champ qualificatif DS/Oral pour le type de note.
    J'ajouterai même un champ un champ trimestre, et pourquoi pas un champ Annee.
    De cette manière, la requête porte sur la table Eleves et la moyenne peut être obtenue avec une fonction de domaine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MoyDom("ChampNote"; "TableNotes"; "critères")
    Critères est une chaîne de caractères du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "[ChampEleve]=""" & [ChampEleve] & """ AND [ChampTrimestre]=1 AND [ChampAnnee]=""2008-2009"""
    [ChampEleve] est le nom du champ dans la table TableNotes
    [ChampEleve] est le nom du champ dans la table Eleves

    A+

  3. #3
    Futur Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Ne fonctionne toujours pas
    Merci LedZeppII,

    J'ai essayé votre solution.
    Dès que je mets votre code, la requête s'affiche, mais dans le champ moyenne il me met #erreur. Par contre, je peux modifier mon champ appréciation, mais je n'ai plus mes moyennes !!!

    Pour vérifier votre code, j'ai remplacé dans ce dernier, le champEleve noir par le nom d'un de mes élèves, et là ça fonctionne, et access me donne la moyenne de cet élève pour tous les enregistrements (c'est-à-dire pour tous mes élèves).
    Ainsi votre code fonctionne.

    Mais je ne comprends toujours pas pourquoi cela ne fonctionne pas pour la moyenne de chaque élève ???

    Pouvez-vous m'aider à avancer ?
    Merci.

  4. #4
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Bonjour,

    Serait-il possible de voir le code SQL de la requête qui ne fonctionne pas ?
    C'est plus simple.

    A+

  5. #5
    Futur Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Code de ma requete
    Rebonjour,

    Pour essayer votre code, j'ai recréé 2 tables et 1 relation:
    Une table TEleve avec les champs "Eleve" et "appréciationtrim1"
    Une table TNotes avec les champs "EleveNoté" et "Noteoral"
    Une relation "jointure interne" entre ces 2 tables au niveau des 2 champs "Eleve" et "EleveNoté"

    J'ai créé ma requête RTrim1 avec les champs "Eleve", "appréciationtrim1" et le champ "Moyenne" dont le code est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Moyenne: MoyDom("[Noteoral]";"[TNotes]";"([EleveNoté]='" & [Eleve] & "')")
    Cette requête s'affiche, mais pour le champ "Moyenne", elle indique pour chaque enregistrement (c'est-à-dire pour chaque élève).

    En revanche lorsque je prends un nom au hasard de mes élèves (par exemple Dupont) et que j'indique ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Moyenne: MoyDom("[Noteoral]";"[TNotes]";"([EleveNoté]='Dupont')")
    Cette requête s'affiche, mais pour le champ "Moyenne", elle indique la moyenne de l'élève Dupont pour chaque enregistrement (c'est-à-dire pour chaque élève).
    En fait cette deuxième requête fonctionne correctement. Le résultat donné est celui qui était demandé.

    Mais, pourquoi ne fonctionne-t-elle pas dans le 1er cas ?
    Merci encore pour votre aide.

  6. #6
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Je ne vois qu'un problème potentiel, si le champ [Eleve] contient un caractère '
    Par contre je suis surpris que l'erreur se produise pour tous les enregistrements.

    Essayer la syntaxe alternative avec le caractère "
    Comme ce dernier est à l'intérieur d'une chaîne de caractères, on le double ("")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Moyenne: MoyDom("[Noteoral]";"[TNotes]";"([EleveNoté]=""" & [Eleve] & """)")
    A+

  7. #7
    Futur Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    J'ai essayé le triple guillemet comme indiqué, et toujours le même problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Moyenne: MoyDom("[Noteoral]";"[TNotes]";"([EleveNoté]=""" & [Eleve] & """)")
    Ce qui est bizarre, c'est qu'avec un nom au hasard ça fonctionne ????

    Je ne comprends toujours pas !!
    Si vous avez d'autres idées, je reste preneur.

    Amicalement.

  8. #8
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Là, je ne comprends plus non plus.

    La requête que j'ai essayé fonctionne parfaitement.
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT TEleve.Eleve, TEleve.appréciationtrim1, 
           DAvg("NoteOral","TNotes","[EleveNoté]=""" & [TEleve].[Eleve] & """") AS Moyenne
    FROM TEleve;
    Mon expression calculée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Moyenne: MoyDom("NoteOral";"TNotes";"[EleveNoté]=""" & [TEleve].[Eleve] & """")
    Pour être encore plus strict, j'ai ajouté le nom de la table devant le nom du champ [Eleve] ([TEleve].[Eleve])

    A+

  9. #9
    Futur Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Merci encore LedZeppII,

    J'ai trouvé le bug. En fait, j'ai voulu simplifier ma question...
    Les champs Elevenoté et Eleve sont du type numérique dans ma table !!!
    Il fallait donc enlever le double guillemets.
    Ainsi, le code est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Moyenne: MoyDom("[Noteoral]";"[TNotes]";"([EleveNoté]=" & [Eleve] & ")")
    Grâce à vous, j'ai réussi tout de même à résoudre mon problème de départ.
    Merci encore pour tout le temps que vous avez passé.

    Amicalement

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

Discussions similaires

  1. impossible de mettre à jour recordset
    Par zephyr59 dans le forum Access
    Réponses: 4
    Dernier message: 25/11/2016, 10h02
  2. [AC-2013] Impossible de mettre à jour Recordset
    Par Palestinian dans le forum Access
    Réponses: 6
    Dernier message: 24/11/2014, 18h12
  3. [AC-2000] erreur d'execution '3326' impossible de mettre à jour le recordset
    Par polo31 dans le forum Sécurité
    Réponses: 2
    Dernier message: 31/07/2009, 09h43
  4. [AC-2000] Impossible de mettre à jour RecordSet
    Par gwems dans le forum VBA Access
    Réponses: 1
    Dernier message: 28/07/2009, 16h09
  5. Réponses: 4
    Dernier message: 29/05/2006, 17h15

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