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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73 UPDATE (saisie_carto INNER JOIN (localisation INNER JOIN (observateur INNER JOIN station ON observateur.[Numéro observateur] = station.[Code observateur]) ON localisation.[Numéro de localité] = station.[Numéro de localité]) ON saisie_carto.[Numéro station] = station.[Numéro station]) INNER JOIN [localisation communes] ON localisation.[Numéro de localité] = [localisation communes].[Numéro de localité] SET saisie_carto.observateur = (SELECT DISTINCT observateur.observateur FROM (observateur INNER JOIN (saisie_carto INNER JOIN station ON saisie_carto.[Numéro station] = station.[Numéro station]) ON observateur.[Numéro observateur] = station.[Code observateur]) ), saisie_carto.[Numéro perso station] = (SELECT DISTINCT station.[Numéro perso station] FROM station INNER JOIN saisie_carto ON saisie_carto.[Numéro station] = station.[Numéro station] ), saisie_carto.dept = (SELECT DISTINCT FIRST([localisation communes].dept) AS PremierDedept FROM [localisation communes] INNER JOIN (localisation INNER JOIN (station INNER JOIN saisie_carto ON saisie_carto.[Numéro station] = station.[Numéro station]) ON localisation.[Numéro de localité] = station.[Numéro de localité]) ON localisation.[Numéro de localité] = [localisation communes].[Numéro de localité] ), saisie_carto.insee = (SELECT DISTINCT FIRST([localisation communes].insee) AS PremierDeinsee FROM [localisation communes] INNER JOIN (localisation INNER JOIN (station INNER JOIN saisie_carto ON saisie_carto.[Numéro station] = station.[Numéro station]) ON localisation.[Numéro de localité] = station.[Numéro de localité]) ON localisation.[Numéro de localité] = [localisation communes].[Numéro de localité] ), saisie_carto.commune = (SELECT DISTINCT FIRST([localisation communes].commune) AS PremierDecommune FROM [localisation communes] INNER JOIN (localisation INNER JOIN (station INNER JOIN saisie_carto ON saisie_carto.[Numéro station] = station.[Numéro station]) ON localisation.[Numéro de localité] = station.[Numéro de localité]) ON localisation.[Numéro de localité] = [localisation communes].[Numéro de localité] ), saisie_carto.[Lieu dit] = (SELECT DISTINCT localisation.[Lieu dit] FROM localisation INNER JOIN (station INNER JOIN saisie_carto ON saisie_carto.[Numéro station] = station.[Numéro station]) ON localisation.[Numéro de localité] = station.[Numéro de localité] ) WHERE (((saisie_carto.observateur) <>[observateur].[observateur]) AND ((saisie_carto.[Numéro perso station]) ='JW08/07/17-2')) OR (((saisie_carto.[Numéro perso station])<>[station].[Numéro perso station] AND (saisie_carto.[Numéro perso station]) ='JW08/07/17-2')) OR (((saisie_carto.[Numéro perso station]) ='JW08/07/17-2') AND ((saisie_carto.dept) <>[localisation communes].[dept])) OR (((saisie_carto.[Numéro perso station]) ='JW08/07/17-2') AND ((saisie_carto.insee) <>[localisation communes].[insee])) OR (((saisie_carto.[Numéro perso station]) ='JW08/07/17-2') AND ((saisie_carto.commune) <>[localisation communes].[commune])) OR (((saisie_carto.[Numéro perso station]) ='JW08/07/17-2') AND ((saisie_carto.[Lieu dit]) <>[localisation].[Lieu dit]));
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 :/
Partager