Là, ça marche (en enlevant le WHERE EXISTS proposé précédemment)!!
Sauf que lorsque je veux lancer ma requete, elle ne se lance pas et j'ai un message: 'l'opération doir utiliser une requête qui peut être mise à jour'...
Là, ça marche (en enlevant le WHERE EXISTS proposé précédemment)!!
Sauf que lorsque je veux lancer ma requete, elle ne se lance pas et j'ai un message: 'l'opération doir utiliser une requête qui peut être mise à jour'...
peux-tu poster le code complet de tes requetes stp pour q je vois où on en est ?
Voilà voilà:
Requete appellant la Somme dans une première table:
Et voilà la requete de mise à jour:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT [Mise en cuve].[id_mise en cuve], [apports de vendange].[id mise en cuve], Sum([apports de vendange].[quantité (en tonnes)]) AS [SommeDequantité (en tonnes)] FROM [Mise en cuve] LEFT JOIN [apports de vendange] ON [Mise en cuve].[id_mise en cuve] = [apports de vendange].[id mise en cuve] GROUP BY [Mise en cuve].[id_mise en cuve], [apports de vendange].[id mise en cuve] HAVING ((([apports de vendange].[id mise en cuve])=[Formulaires]![Gestion des apports de vendange]![id_mise en cuve]));
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 UPDATE [Mise en cuve] SET [Mise en cuve].[volume total (hl)] = (SELECT Requete1.[SommeDequantité (en tonnes)] FROM Requete1, [mise en cuve] WHERE [Mise en cuve].[id_mise en cuve]=Requete1.[id_mise en cuve]);
Essaie comme ça pour la requete de mise à jour, et si ça ne passe pas, on essaiera par VBA...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 UPDATE [Mise en cuve] SET [Mise en cuve].[volume total (hl)] = (SELECT Requete1.[SommeDequantité (en tonnes)] FROM Requete1 WHERE [Mise en cuve].[id_mise en cuve]=Requete1.[id_mise en cuve]);
ça ne change rien, j'ai toujours le même message d'erreur...
Je vois pas où est le problème, car en plus quand je suis dans ma requete, sans la lancer, j'ai tous les 'volume total (hl)' de toutes mes mises en cuves. Comme si le filtre de la première requete ne marchati pas du tout...
Merci pour ta patience!![]()
Est-ce que tu obtiens ce que tu veux en lançant ta première requete ?
Si oui on pourra déjà se baser la dessus !
Oui, ma première requete m'affiche une seule ligne, avec seulement l'id_mise en cuve concernée par le formulaire (Gestion des apports de vendange)...
Tu as donc Requete1(id_mise en cuve, id mise en cuve, Sommedequantité (en tonnes)) qui sert de base et tu veux mettre à jour le champ "volume total (hl)" de ta table "Mise en cuve".
Le rapport utilisé est 1 tonne = 1 hl
Sommes-nous d'accord ?
Oui, pour simplifier!
car le rapport entre tonnes et hl n'est pas de 1 (1hl=0.13tonnes), mais je pense que c'est un 'détail' pour le fonctionnement de ma requete, je pourrais donc le modifier ultérieurement...
Insère ce code pour un bouton de mise à jour de ta table.
Code : 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 Dim rst1 As QueryDef Dim rst2 As Recordset DoCmd.SetWarnings False Set rst1 = QueryDef.OpenRecordset("Requete1") Set rst2 = CurrentDb.OpenRecordset("Mise en cuve") While Not rst2.EOF If rst2.Fields("id_mise en cuve") = rst1.Fields("id_mise en cuve") Then 'rempli la table "Mise en cuve" rst2.Edit rst2.Fields("volume total (hl)") = rst1.Fields("SommeDequantité (en tonnes)")*0.13 rst2.Update End If rst2.MoveNext Wend rst1.Close rst2.Close Set rst1 = Nothing Set rst2 = Nothing DoCmd.SetWarnings True
C'est fait, mais quand je clique dessus, j'ai: 'Erreur d'execution 424'
Et le débogage se porte sur
Code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part Set rst1 = QueryDef.OpenRecordset("Requete1")
En remplaçant par :
ça donne quoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Set rst1 = CurrentDb.OpenRecordset("Requete1")
ça donne
'erreur 3061:
Trop peu de paramètres. 1 attendu'...![]()
Et là ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Set rst1 = CurrentDb.OpenRecordset("Requete1", dbOpenDynaset)
Salut,
ça donne exactement la même chose...
Salut,
Finalement, j'ai trouvé une autre solution:
j'ai ajouté un champ 'Somme' dans ma table 'apportsdevendange'. J'y calcule la somme grâce à:
Et ensuite je n'ai pus qu'à faire une requete mise à jour simple pour avoir le volume en hl dans l'autre table (Mise en cuve).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 UPDATE apportsdevendange SET apportsdevendange.Somme = DSum('quantité','apportsdevendange','id_mise_en_cuve=[Formulaires]![Gestion des apports de vendange]![id_mise_en_cuve]') WHERE (((apportsdevendange.id_mise_en_cuve)=Formulaires![Gestion des apports de vendange]!id_mise_en_cuve));
Voilà voilà...
Merci pour l'aide![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager