|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2008 Messages : 61 ![]() |
Bonjour, je viens de nouveau sur ce forum car je craque.
Je suis un nouvel arrivant dans une structure, et je dois apprendre à manier ACCESS... Évidement pour les bases de données ce n'est pas le top, mais faut faire avec :/ Et on me demande de faire une requête qui mettra à jour une table, par rapport à d'autres. En effet, la table saisie_carto est alimentée par station, localisation, localisation communes et observateur. Mais il arrive parfois, qu'une info change dans ces tables, et que saisie_carto n'est pas mis à jour. On le fait donc à la main. Le but de cette est donc de faire des mise à jour automatiquement. La requête repère s'il y a une différence, et la corrige. Mais voilà, lorsque j'exécute ma requête, j'ai cette erreur : L'opération doit utiliser une requête qui peut être mise à jour. (Erreur 3073) Pourtant, la requête est bonne et fonctionne (elle ne me trouve qu'un seul résultat en mode feuille de données) Voici la requête : Code sql :
J'ai mis en forme cette requête avec la mise en forme automatique d'Oracle (Access est aussi une horreur en mise en forme :/) Je fais un test avec saisie_carto.[Numéro perso station]) ='JW08/07/17-2' pour voir déjà avec cette ligne là avant de faire pour les autres. J'ai lu sur ce site : http://www.ms-news.net/f1361/requete...-10774190.html que ce n'était pas possible de faire un UPDATE avec ACCESS. J'aurais aimé avoir votre avis, et avoir plus de précision sur une solution. Je vous remercie par avance. PS : ça fait 3 jours que je suis dessus :/ |
||
|
|
00
|
|
|
#2 | |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour Dark_mouette,
Les UPDATE sont tout à fait possibles sur Access, comme dans tous les systèmes gérant le SQL en général. Je te renvoie sur ce fil. Citation:
En regardant, vite fait, ta requête (qui sera diffcilement maintenable, dans le temps), je te suggère de créer plusieurs sous-requêtes (via l'assistant) : la requête finale fera, alors, le boulot. Si tu ne t'en sors pas, il y a toujours la possibilité de créer une requête "création de table" qui contiendra les clés à mettre à jour (ainsi que les données). Ensuite, tu crées une requête "mise à jour" (via l'assisant) en partant de la table ainsi créée, liée avec la table à mettre à jour. Voilà quelques pistes...
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
|
00
|
|
|
#3 |
|
Membre actif
![]() Inscription : décembre 2009 Messages : 204 ![]() |
J'ai déjà été confronté à ce problème, il me semble que c'était un problème de droits de modification sur le dossier.
En espérant ne pas dire de bêtise et que ça puisse aider. |
|
|
00
|
|
|
#4 | |||||
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2008 Messages : 61 ![]() |
J'ai déjà essayé en prenant qu'une partie des requêtes.
J'ai testé avec un UPDATE que sur saisie_carto.observateur Code sql :
Et ça continuait à me mettre l'erreur. Mais si je changeais en ceci : Code sql :
Et bien là, la requête fonctionne. C'est que j'ai les droits pour changer dans les tables. Mais on dirait qu'il n'aime pas la requête imbriquée lors de la séléection des données. Alors qu'il les trouve bien en mode feuille de données. Cette requête me déprime totalement Citation:
Surtout que la requête devrait normalement fonctionner :/ Merci d'avance pour vos futurs réponses |
|||||
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Tu ne veux donc pas découper ta requête en plusieurs requêtes, via l'assistant : OK.
Pour la requête "création de table", transformes ta requête UPDATE en requête SELECT et sélectionner les champs suivants : - saisie_carto.ID (clé primaire de saisie_carto) ; - saisie_carto.observateur (valeur actuelle) ; - observateur (nouvelle valeur à affecter). Via l'assistant, tu modifies le type de ta requête : - click droit à un endroit libre de l'emplacement des tables ; - "Type de requête" => "Requête création de table" ; - donner un nom à ta table temporaire ; - lancer la requête. ==> une nouvelle table devrait être générée dans l'onglet "Table". Via l'assistant, créer une requête R1 : - click droit à un endroit libre de l'emplacement des tables ; - "Type de requête" => "Requête mise à jour" ; - ajouter la table temporaire (FROM) ; - ajouter la table saisie_carto (FROM) ; - lier les deux tables via saisie_carto.ID (JOIN) ; - sélectionner le champ "observateur" de "saisie_carto" (SET) ; - "Valeur" = tableTemporaire.observateur (SET xxx=) ; - sauvegarder. ==> lancer R1 : cela devrait mettre à jour ta table saisie_carto avec le nouvel observateur (!...). A tester.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#6 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2008 Messages : 61 ![]() |
Alors pendant que le site était down (je n'avais qu'une page blanche un petit moment) j'ai continué mes tests.
Et je ne sais pas si ACCESS est intelligent ou non (si c'est le cas, il est plus intelligent sur les requêtes imbriquées), mais avec ce code, ça aurait l'air de fonctionner (du moins pour le test) : Code sql :
Moi personnellement je trouve ça étrange, il faut enlever les jointures dans la requête imbriquées. Il a l'air de les prendre dans le UPDATE, et les sauvegarder en gros. Je ne sais pas si c'est normal ou non, mais du moins ça fonctionne ainsi... Mais j'aimerais avoir la confirmation avant de me dire "ouf enfin trouver" et "mais quelle dob ACCES à rien faire comme les autres" Ah non cette dernière réflexion je l'ai depuis Lundi... |
||
|
|
00
|
|
|
#7 | ||||
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Citation:
D'autre part, comme tout logiciel, Access nécessite un minimum de formation. D'ailleurs, une quantité importante de tutoriels existe sur ce forum. Une FAQ complète le tableau. Enfin, Citation:
Citation:
Citation:
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
||||
|
|
00
|
|
|
#8 | |||
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 410 ![]() |
bonjour à tous,
ahhhhh la la, encore le fameux: Citation:
Citation:
Dealing with Non-Updateable Queries and the Use of Temporary Tables in Microsoft Access J'ai l'impression qu'on est pile-poil dans la problématique: Citation:
|
|||
|
00
|
|
|
#9 |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2008 Messages : 61 ![]() |
Si je juge aussi vite ACCES (point de vu SQL) c'est parce que j'ai fait du Mysql, Oracle et Informix.
Ils avaient tous la même structure pour les requêtes. Alors qu'ici avec ACCESS, tout est complétement différent... Je ne suis ni pro microsoft, ou pro linux, j'aime beaucoup bosser sur Excel ou XP/Seven, mais il faut avouer que point de vu SQL, ACCESS n'est pas à la hauteur... Merci tout de même pour les réponses, mais ce n'étaient pas des solutions envisageable. Je suis admin SI sur ce site que depuis 3 semaines, et je touche à ce SI que depuis Lundi, je ne peux pas créer une table comme bon me semble. Je cherchais une solution dans la requête, savoir pourquoi elle ne voulait pas fonctionner. Merci f-leb, je vois que même les anglais s'arrachent les cheveux sur les UPDATE (pourtant facile sous un autre SGBD). Mais il semblerai (je ne suis toujours pas sur à 100%) que la solution que j'ai trouvé règle le problème. ACCESS a l'air de prendre en compte les jointure dès le départ, et ainsi pas besoin de les mettre dans les sous requêtes. C'est tordu (point de vu SQL pur) mais justement ACCESS a son propre langage SQL... Maintenant à voir si cela fonctionne avec plusieurs UPDATE et non 1 seul... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com