Bonjour
Mon objectif est double :
- faire trois requêtes en vba
- Concaténer deux requêtes en utilisant le résultat de la troisième
exemple
requête 1 : renvoie le nom de l'ingrédient qui doit être utilisé
requête 2 : revoie le poids total de la recette
requête 3 : revoie la quantité de l'ingrédient dans la recette
Résultat voulu : NomIngrédient1 (Quantité en %), NomIngrédient2 (Quantité en %), ... en fonction du nombre d'ingrédient de la recette.
J'ai réussi à faire la requête sur le nom de l'ingrédient
J'ai réussi à faire la requête sur la quantité totale (même si elle n'est pas parfaite , elle renvoie la bonne valeur)
Je n'ai pas réussi à faire la troisième requête.
> comment diviser une valeur par un nombre obtenu dans une autre requête (requête 2) ?
> comment concaténer les deux requêtes ?
Ci dessous le code d'obtention de la somme des ingrédients; la valeur "SommeRecetteVersion" obtenue à la fin est Public
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
25
26
27 Public Sub ValeurSomme(ByVal RecetteVersion As Integer) Dim db As DAO.Database Dim rst As DAO.Recordset Dim requete As DAO.QueryDef Dim sSQL As String Dim SomRecetteVersion Set db = CurrentDb Set requete = db.CreateQueryDef("", "SELECT ..................." _ & " FROM ....................." _ & " GROUP BY ..............................." _ & " HAVING ...............................=" & RecetteVersion) Set rst = requete.OpenRecordset() rst.MoveFirst If Not rst.EOF Then rst.MoveFirst While Not rst.EOF SomRecetteVersion = SomRecetteVersion & rst.Fields(0).Value & " " rst.MoveNext Wend End If Set rst = Nothing SommeRecetteVersion = SomRecetteVersion End Sub
Ci dessous le code pour concaténer les deux requêtes
Questions :
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 Public Function RequeteConcatenation() Dim db As DAO.Database Dim rst As DAO.Recordset Dim rst1 As DAO.Recordset Dim requete As DAO.QueryDef Dim requete1 As DAO.QueryDef Dim valeur as Integer Set db = CurrentDb Call ValeurSomme(RecetteVersion) ' ici RecetteVersion sera donné par une txtbox du formulaire Set requete = db.CreateQueryDef("", "SELECT .......") Set requete1 = db.CreateQueryDef("", "SELECT .......") Set rst = requete.OpenRecordset() Set rst1 = requete1.OpenRecordset() rst.MoveFirst If Not rst.EOF Then rst.MoveFirst While Not rst.EOF valeur = valeur & rst.Fields(0).Value & " ( " & valeur & rst1.Fields(0).Value & " %)" rst.MoveNext rst1.MoveNext Wend End If Set rst = Nothing Set rst1 = Nothing msgbox valeur End Function
comment concaténer les deux requêtes
Comment diviser la quantité par le poids total et ainsi obtenir le % de l'ingrédient ?
Merci de votre aide
Partager